diff options
| author | Dax Raad <[email protected]> | 2025-05-30 13:58:46 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-05-30 14:40:59 -0400 |
| commit | 42c7880858ee9bec72f3fb71c7f19512a38b0b8e (patch) | |
| tree | 4e05a29314d2aeb21c644a87b1dcf217ce77bd13 /js/src | |
| parent | 017a440a700dbaf64912695265f2f553b2c9c079 (diff) | |
| download | opencode-42c7880858ee9bec72f3fb71c7f19512a38b0b8e.tar.gz opencode-42c7880858ee9bec72f3fb71c7f19512a38b0b8e.zip | |
sync
Diffstat (limited to 'js/src')
| -rw-r--r-- | js/src/index.ts | 4 | ||||
| -rw-r--r-- | js/src/session/session.ts | 30 | ||||
| -rw-r--r-- | js/src/share/share.ts | 7 |
3 files changed, 27 insertions, 14 deletions
diff --git a/js/src/index.ts b/js/src/index.ts index 6d19fd74c..69d246066 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -41,9 +41,7 @@ cli ? await Session.get(options.session) : await Session.create(); console.log("Session:", session.id); - console.log( - `Share: ${Share.URL.replace("api.", "")}/share?id=${session.id}`, - ); + console.log(`Share: ${Share.URL.replace("api.", "")}/s?id=${session.id}`); Bus.subscribe(Message.Event.Updated, async (message) => { console.log("Thinking..."); diff --git a/js/src/session/session.ts b/js/src/session/session.ts index 3bd8ad421..56e19d07d 100644 --- a/js/src/session/session.ts +++ b/js/src/session/session.ts @@ -30,8 +30,17 @@ export namespace Session { export const Info = z .object({ id: Identifier.schema("session"), - shareID: z.string().optional(), + share: z + .object({ + secret: z.string(), + url: z.string(), + }) + .optional(), title: z.string(), + time: z.object({ + created: z.number(), + updated: z.number(), + }), }) .openapi({ ref: "session.info", @@ -61,13 +70,17 @@ export namespace Session { const result: Info = { id: Identifier.descending("session"), title: "New Session - " + new Date().toISOString(), + time: { + created: Date.now(), + updated: Date.now(), + }, }; log.info("created", result); state().sessions.set(result.id, result); await Storage.writeJSON("session/info/" + result.id, result); - share(result.id).then((shareID) => { + share(result.id).then((share) => { update(result.id, (draft) => { - draft.shareID = shareID; + draft.share = share; }); }); Bus.publish(Event.Updated, { @@ -88,13 +101,13 @@ export namespace Session { export async function share(id: string) { const session = await get(id); - if (session.shareID) return session.shareID; - const shareID = await Share.create(id); - if (!shareID) return; + if (session.share) return session.share; + const share = await Share.create(id); + console.log("share", share); await update(id, (draft) => { - draft.shareID = shareID; + draft.share = share; }); - return shareID as string; + return share; } export async function update(id: string, editor: (session: Info) => void) { @@ -102,6 +115,7 @@ export namespace Session { const session = await get(id); if (!session) return; editor(session); + session.time.updated = Date.now(); sessions.set(id, session); await Storage.writeJSON("session/info/" + id, session); Bus.publish(Event.Updated, { diff --git a/js/src/share/share.ts b/js/src/share/share.ts index 62dee63a7..8d4af8795 100644 --- a/js/src/share/share.ts +++ b/js/src/share/share.ts @@ -16,7 +16,8 @@ export namespace Share { if (root !== "session") return; const [, sessionID] = splits; const session = await Session.get(sessionID); - if (!session.shareID) return; + if (!session.share) return; + const { secret } = session.share; const key = payload.properties.key; pending.set(key, payload.properties.content); @@ -31,7 +32,7 @@ export namespace Share { method: "POST", body: JSON.stringify({ sessionID: sessionID, - shareID: session.shareID, + secret, key: key, content, }), @@ -61,6 +62,6 @@ export namespace Share { body: JSON.stringify({ sessionID: sessionID }), }) .then((x) => x.json()) - .then((x) => x.shareID); + .then((x) => x as { url: string; secret: string }); } } |
