Add lock on settings

This commit is contained in:
Andras Schmelczer 2025-11-30 14:42:50 +00:00
commit 39860f7f04

View file

@ -1,5 +1,6 @@
import type { Logger } from "../tracing/logger";
import { awaitAll } from "../utils/await-all";
import { Lock } from "../utils/data-structures/locks";
export interface SyncSettings {
remoteUri: string;
@ -33,6 +34,7 @@ export const DEFAULT_SETTINGS: SyncSettings = {
export class Settings {
private settings: SyncSettings;
private readonly lock: Lock = new Lock();
private readonly onSettingsChangeHandlers: ((
newSettings: SyncSettings,
@ -83,6 +85,7 @@ export class Settings {
}
public async setSettings(value: Partial<SyncSettings>): Promise<void> {
await this.lock.withLock(async () => {
this.logger.debug(`Updating settings with: ${JSON.stringify(value)}`);
const oldSettings = this.settings;
this.settings = {
@ -101,6 +104,7 @@ export class Settings {
);
await this.save();
});
}
private async save(): Promise<void> {