diff options
Diffstat (limited to 'js/src/share')
| -rw-r--r-- | js/src/share/share.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/js/src/share/share.ts b/js/src/share/share.ts new file mode 100644 index 000000000..6c0573e91 --- /dev/null +++ b/js/src/share/share.ts @@ -0,0 +1,45 @@ +import { App } from "../app"; +import { Bus } from "../bus"; +import { Session } from "../session/session"; +import { Storage } from "../storage/storage"; + +export namespace Share { + 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 session = await Session.get(sessionID); + if (!session.shareID) return; + console.log({ + sessionID: sessionID, + shareID: session.shareID, + key: payload.properties.key, + content: payload.properties.content, + }); + await fetch(`${URL}/share_sync`, { + method: "POST", + body: JSON.stringify({ + sessionID: sessionID, + shareID: session.shareID, + key: payload.properties.key, + content: payload.properties.content, + }), + }).then(console.log); + }); + }); + + export async function init() { + await state(); + } + + const URL = "https://api.dev.opencode.ai"; + export async function create(sessionID: string) { + return fetch(`${URL}/share_create`, { + method: "POST", + body: JSON.stringify({ sessionID: sessionID }), + }) + .then((x) => x.json()) + .then((x) => x.shareID); + } +} |
