fix(mobx): ignore lack of sync object

This commit is contained in:
Paul Makles 2022-01-02 15:41:43 +00:00
parent a688063d96
commit d92c50fdb8

View file

@ -123,6 +123,7 @@ export default class State {
() => stringify(store.toJSON()), () => stringify(store.toJSON()),
async (value) => { async (value) => {
try { try {
console.log(`I am saving ${id} as ${value}`);
await localforage.setItem(id, JSON.parse(value)); await localforage.setItem(id, JSON.parse(value));
if (id === "sync") return; if (id === "sync") return;
if (!client) return; if (!client) return;
@ -217,14 +218,12 @@ export default class State {
// Load MobX store. // Load MobX store.
const sync = (await localforage.getItem("sync")) as DataSync; const sync = (await localforage.getItem("sync")) as DataSync;
if (sync) { const { revision } = sync ?? { revision: {} };
const { revision } = sync;
for (const [id, store] of this.persistent) { for (const [id, store] of this.persistent) {
if (id === "sync") continue; if (id === "sync") continue;
const data = await localforage.getItem(id); const data = await localforage.getItem(id);
if (typeof data === "object" && data !== null) { if (typeof data === "object" && data !== null) {
store.hydrate(data, revision[id]); store.hydrate(data, revision[id] ?? +new Date());
}
} }
} }
} }