diff --git a/frontend/sync-client/src/persistence/client-metadata-store.ts b/frontend/sync-client/src/persistence/client-metadata-store.ts index 43daf227..57d27c27 100644 --- a/frontend/sync-client/src/persistence/client-metadata-store.ts +++ b/frontend/sync-client/src/persistence/client-metadata-store.ts @@ -1,6 +1,8 @@ -import type { StoredClient } from "../sync-client"; import type { StoredDatabase } from "./database"; -import type { MetadataPersistenceProvider } from "./metadata-persistence-provider"; +import type { + MetadataPersistenceProvider, + StoredClient +} from "./metadata-persistence-provider"; import { Lock } from "../utils/data-structures/locks"; // Serialize partial updates to the shared settings, database and notification store @@ -10,11 +12,11 @@ export class ClientMetadataStore { private constructor( public stored: StoredClient, - private readonly persistence: MetadataPersistenceProvider + private readonly persistence: MetadataPersistenceProvider ) { } public static async load( - persistence: MetadataPersistenceProvider + persistence: MetadataPersistenceProvider ): Promise { return new ClientMetadataStore( (await persistence.load()) ?? {}, diff --git a/frontend/sync-client/src/persistence/metadata-persistence-provider.ts b/frontend/sync-client/src/persistence/metadata-persistence-provider.ts index b001bc1f..6cbd9730 100644 --- a/frontend/sync-client/src/persistence/metadata-persistence-provider.ts +++ b/frontend/sync-client/src/persistence/metadata-persistence-provider.ts @@ -1,5 +1,17 @@ +import type { StoredDatabase } from "./database"; +import type { SyncSettings } from "./settings"; +import type { LocalChange } from "../sync-operations/local-changes"; + +export type StoredClient = Partial<{ + settings: Partial; + database: StoredDatabase; + localChanges: LocalChange[]; + localChangesVaultKey: string; + historyCheckpoint: { vaultKey: string; checkpoint?: string }; +}>; + // Replace the complete metadata value atomically. -export interface MetadataPersistenceProvider { - load: () => Promise; - save: (data: T) => Promise; +export interface MetadataPersistenceProvider { + load: () => Promise; + save: (data: StoredClient) => Promise; }