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/session | |
| parent | 017a440a700dbaf64912695265f2f553b2c9c079 (diff) | |
| download | opencode-42c7880858ee9bec72f3fb71c7f19512a38b0b8e.tar.gz opencode-42c7880858ee9bec72f3fb71c7f19512a38b0b8e.zip | |
sync
Diffstat (limited to 'js/src/session')
| -rw-r--r-- | js/src/session/session.ts | 30 |
1 files changed, 22 insertions, 8 deletions
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, { |
