Skip to content

Commit

Permalink
rudimentary online/offline support
Browse files Browse the repository at this point in the history
  • Loading branch information
sammynave committed Jan 5, 2024
1 parent 2d8a248 commit e574902
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions src/routes/app/offline-first/sync-db-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,17 @@ async function pushChangesSince({ database, ws, sinceVersion, serverSiteId }) {
// if websocket is not open
if (ws.readyState === WebSocket.OPEN) {
const version = await database.version();
await database.insertTrackedPeers(serverSiteId, version, 1);
ws.send(
JSON.stringify({
type: 'update',
siteId: database.siteId,
version,
changes
})
);
if (navigator.onLine) {
await database.insertTrackedPeers(serverSiteId, version, 1);
ws.send(
JSON.stringify({
type: 'update',
siteId: database.siteId,
version,
changes
})
);
}
}
}

Expand Down Expand Up @@ -105,6 +107,19 @@ export function db({ databasePromise, wsPromise, serverSiteId, name }) {
channel?.postMessage({ tables, sender: self });
}
});
databasePromise.then(async (database) => {
const ws = await wsPromise;
globalThis.addEventListener('online', async (event) => {
const result = await database.lastTrackedChangeFor(serverSiteId, 1);
const trackedVersion = result?.[0]?.[0] ?? 0;
await pushChangesSince({
database,
ws,
sinceVersion: trackedVersion,
serverSiteId
});
});
});

const repo = ({ watch, view, commands = {} }) => {
const q = writable([]);
Expand Down

0 comments on commit e574902

Please sign in to comment.