summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--js/src/share/share.ts35
1 files changed, 21 insertions, 14 deletions
diff --git a/js/src/share/share.ts b/js/src/share/share.ts
index daf6d67a5..a9b5ed8fd 100644
--- a/js/src/share/share.ts
+++ b/js/src/share/share.ts
@@ -7,27 +7,34 @@ import { Log } from "../util/log";
export namespace Share {
const log = Log.create({ service: "share" });
+ let queue: Promise<void> = Promise.resolve();
+
const state = App.state("share", async () => {
Bus.subscribe(Storage.Event.Write, async (payload) => {
const [root, ...splits] = payload.properties.key.split("/");
if (root !== "session") return;
- const [type, sessionID] = splits;
+ const [, sessionID] = splits;
const session = await Session.get(sessionID);
if (!session.shareID) return;
- await fetch(`${URL}/share_sync`, {
- method: "POST",
- body: JSON.stringify({
- sessionID: sessionID,
- shareID: session.shareID,
- key: payload.properties.key,
- content: JSON.stringify(payload.properties.content),
- }),
- }).then((x) => {
- log.info("synced", {
- key: payload.properties.key,
- status: x.status,
+
+ queue = queue
+ .then(() =>
+ fetch(`${URL}/share_sync`, {
+ method: "POST",
+ body: JSON.stringify({
+ sessionID: sessionID,
+ shareID: session.shareID,
+ key: payload.properties.key,
+ content: JSON.stringify(payload.properties.content),
+ }),
+ }),
+ )
+ .then((x) => {
+ log.info("synced", {
+ key: payload.properties.key,
+ status: x.status,
+ });
});
- });
});
});