diff --git a/plugin/src/database/database.ts b/plugin/src/database/database.ts index 43d20e4..4b90b6f 100644 --- a/plugin/src/database/database.ts +++ b/plugin/src/database/database.ts @@ -9,11 +9,14 @@ import { interface StoredDatabase { documents: Map; settings: SyncSettings; + lastSeenUpdateId: VaultUpdateId | undefined; } export class Database { private _documents: Map = new Map(); private _settings: SyncSettings; + private _lastSeenUpdateId: VaultUpdateId | undefined; + private onSettingsChangeHandlers: Array<(settings: SyncSettings) => void> = []; @@ -34,7 +37,7 @@ export class Database { } Logger.getInstance().debug( - `Loaded documents ${JSON.stringify( + `Loaded documents: ${JSON.stringify( Object.fromEntries(this._documents.entries()), null, 2 @@ -48,7 +51,13 @@ export class Database { ); Logger.getInstance().debug( - `Loaded settings ${JSON.stringify(this._settings, null, 2)}` + `Loaded settings: ${JSON.stringify(this._settings, null, 2)}` + ); + + this._lastSeenUpdateId = initialState.lastSeenUpdateId; + + Logger.getInstance().debug( + `Loaded last seen update id: ${this._lastSeenUpdateId}` ); } @@ -85,6 +94,23 @@ export class Database { await this.setSettings(this._settings); } + public getLastSeenUpdateId(): VaultUpdateId | undefined { + return this._lastSeenUpdateId; + } + + public async setLastSeenUpdateId( + value: VaultUpdateId | undefined + ): Promise { + this._lastSeenUpdateId = value; + await this.save(); + } + + public async resetSyncState(): Promise { + this._documents = new Map(); + this._lastSeenUpdateId = 0; + await this.save(); + } + public async setDocument({ relativePath, parentVersionId, @@ -135,6 +161,7 @@ export class Database { await this.saveData({ documents: Object.fromEntries(this._documents.entries()), settings: this._settings, + lastSeenUpdateId: this._lastSeenUpdateId, }); } }