diff --git a/website/src/lib/db.ts b/website/src/lib/db.ts index 6a31a423..8b6edcd3 100644 --- a/website/src/lib/db.ts +++ b/website/src/lib/db.ts @@ -42,14 +42,22 @@ class Database extends Dexie { export const db = new Database(); // Wrap Dexie live queries in a Svelte store to avoid triggering the query for every subscriber, and updates to the store are pushed to the DB -export function bidirectionalDexieStore(table: Dexie.Table, key: K, initial: V, initialize: boolean = true): Writable { - let store = writable(initialize ? initial : undefined); +export function bidirectionalDexieStore(table: Dexie.Table, key: K, initial: V, initialize: boolean = true): Writable { + let first = true; + let store = writable(initialize ? initial : undefined); liveQuery(() => table.get(key)).subscribe(value => { - if (value === undefined && !initialize) { - store.set(initial); - } else if (value !== undefined) { + if (value === undefined) { + if (first) { + if (!initialize) { + store.set(initial); + } + } else { + store.set(value); + } + } else { store.set(value); } + first = false; }); return { subscribe: store.subscribe,