Improve server config setting section

This commit is contained in:
Andras Schmelczer 2025-03-22 15:38:23 +00:00
parent da369e61e7
commit acbc0c0e65
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
4 changed files with 163 additions and 80 deletions

View file

@ -58,16 +58,21 @@ export class Settings {
key: T,
value: SyncSettings[T]
): Promise<void> {
const newSettings = { ...this.settings, [key]: value };
this.logger.debug(`Setting '${key}' to '${value}'`);
await this.setSettings(newSettings);
await this.setSettings({
[key]: value
});
}
private async setSettings(value: SyncSettings): Promise<void> {
public async setSettings(value: Partial<SyncSettings>): Promise<void> {
const oldSettings = this.settings;
this.settings = value;
this.settings = {
...this.settings,
...value
};
this.onSettingsChangeHandlers.forEach((handler) => {
handler(value, oldSettings);
handler(this.settings, oldSettings);
});
await this.save();
}

View file

@ -191,6 +191,10 @@ export class SyncClient {
await this.settings.setSetting(key, value);
}
public async setSettings(value: Partial<SyncSettings>): Promise<void> {
await this.settings.setSettings(value);
}
public addOnSettingsChangeListener(
handler: (settings: SyncSettings, oldSettings: SyncSettings) => void
): void {