Add old settings to onSettingsChangeHandlers

This commit is contained in:
Andras Schmelczer 2024-12-18 20:41:11 +00:00
commit 0d61c1ed9c
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C

View file

@ -18,8 +18,9 @@ export class Database {
private _settings: SyncSettings; private _settings: SyncSettings;
private _lastSeenUpdateId: VaultUpdateId | undefined; private _lastSeenUpdateId: VaultUpdateId | undefined;
private onSettingsChangeHandlers: Array<(settings: SyncSettings) => void> = private onSettingsChangeHandlers: Array<
[]; (newSettings: SyncSettings, oldSettings: SyncSettings) => void
> = [];
public constructor( public constructor(
initialState: Partial<StoredDatabase> | undefined, initialState: Partial<StoredDatabase> | undefined,
@ -71,13 +72,16 @@ export class Database {
} }
public async setSettings(value: SyncSettings): Promise<void> { public async setSettings(value: SyncSettings): Promise<void> {
const oldSettings = this._settings;
this._settings = value; this._settings = value;
this.onSettingsChangeHandlers.forEach((handler) => handler(value)); this.onSettingsChangeHandlers.forEach((handler) =>
handler(value, oldSettings)
);
await this.save(); await this.save();
} }
public addOnSettingsChangeHandlers( public addOnSettingsChangeHandlers(
handler: (settings: SyncSettings) => void handler: (settings: SyncSettings, oldSettings: SyncSettings) => void
) { ) {
this.onSettingsChangeHandlers.push(handler); this.onSettingsChangeHandlers.push(handler);
} }
@ -86,13 +90,12 @@ export class Database {
key: T, key: T,
value: SyncSettings[T] value: SyncSettings[T]
): Promise<void> { ): Promise<void> {
this._settings[key] = value;
Logger.getInstance().debug( Logger.getInstance().debug(
`Setting ${key} to ${value}, new settings: ${JSON.stringify( `Setting ${key} to ${value}, new settings: ${JSON.stringify(
this._settings this._settings
)}` )}`
); );
await this.setSettings(this._settings); await this.setSettings({ ...this._settings, [key]: value });
} }
public getLastSeenUpdateId(): VaultUpdateId | undefined { public getLastSeenUpdateId(): VaultUpdateId | undefined {