From 5f750b7368226ce455a6848f5f744d43179198e5 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 23 May 2025 16:20:21 -0400 Subject: share --- js/src/share/share.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 js/src/share/share.ts (limited to 'js/src/share') 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); + } +} -- cgit v1.2.3