From 177875f624cb66cde08cfaf9bcf959959abe90b7 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 9 Jun 2025 23:07:29 -0400 Subject: ssr sync --- packages/function/src/api.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'packages/function/src') diff --git a/packages/function/src/api.ts b/packages/function/src/api.ts index b058321c0..ae390412c 100644 --- a/packages/function/src/api.ts +++ b/packages/function/src/api.ts @@ -69,7 +69,7 @@ export class SyncServer extends DurableObject { return secret } - public async messages() { + public async getData() { const data = await this.ctx.storage.list() const messages = [] for (const [key, content] of data.entries()) { @@ -173,14 +173,29 @@ export default { return stub.fetch(request) } - if (request.method === "GET" && method === "share_messages") { + if (request.method === "GET" && method === "share_data") { const id = url.searchParams.get("id") - console.log("share_messages", id) + console.log("share_data", id) if (!id) return new Response("Error: Share ID is required", { status: 400 }) const stub = env.SYNC_SERVER.get(env.SYNC_SERVER.idFromName(id)) - const messages = await stub.messages() - return new Response(JSON.stringify({ messages }), { + const data = await stub.getData() + let info + const messages = {} + data.forEach((d) => { + const [root, type, ...splits] = d.key.split("/") + if (root !== "session") return + if (type === "info") { + info = d.content + return + } + if (type === "message") { + const [, messageID] = splits + messages[messageID] = d.content + } + }) + + return new Response(JSON.stringify({ info, messages }), { headers: { "Content-Type": "application/json" }, }) } -- cgit v1.2.3