From 754cc667411cc1d652acd0a811c530dcc35f5927 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 26 May 2025 23:04:40 -0400 Subject: Add automatic CONTEXT.md loading and improve share sync reliability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with opencode Co-Authored-By: opencode --- js/src/share/share.ts | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'js/src/share') diff --git a/js/src/share/share.ts b/js/src/share/share.ts index a9b5ed8fd..db204ab97 100644 --- a/js/src/share/share.ts +++ b/js/src/share/share.ts @@ -8,6 +8,7 @@ export namespace Share { const log = Log.create({ service: "share" }); let queue: Promise = Promise.resolve(); + const pending = new Map(); const state = App.state("share", async () => { Bus.subscribe(Storage.Event.Write, async (payload) => { @@ -17,23 +18,32 @@ export namespace Share { const session = await Session.get(sessionID); if (!session.shareID) return; + const key = payload.properties.key; + pending.set(key, payload.properties.content); + queue = queue - .then(() => - fetch(`${URL}/share_sync`, { + .then(async () => { + const content = pending.get(key); + if (content === undefined) return; + pending.delete(key); + + return fetch(`${URL}/share_sync`, { method: "POST", body: JSON.stringify({ sessionID: sessionID, shareID: session.shareID, - key: payload.properties.key, - content: JSON.stringify(payload.properties.content), + key: key, + content: JSON.stringify(content), }), - }), - ) - .then((x) => { - log.info("synced", { - key: payload.properties.key, - status: x.status, }); + }) + .then((x) => { + if (x) { + log.info("synced", { + key: key, + status: x.status, + }); + } }); }); }); -- cgit v1.2.3