From b4e01feada18f3f65d2972405cb8f0ca437165d5 Mon Sep 17 00:00:00 2001 From: vegard Date: Mon, 16 Mar 2026 03:52:28 +0100 Subject: [PATCH] Fix: hent metadata fra PG ved meldingsoppdatering i sanntid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Etter onUpdate fra SpacetimeDB hentes edited_at og metadata (ai_processed, ai_action) fra PG, slik at revisjonshistorikk og AI-badge vises korrekt også for sanntidsoppdateringer. Co-Authored-By: Claude Opus 4.6 --- web/src/lib/chat/spacetime.svelte.ts | 13 +++++++++++ .../messages/[messageId]/metadata/+server.ts | 22 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 web/src/routes/api/messages/[messageId]/metadata/+server.ts diff --git a/web/src/lib/chat/spacetime.svelte.ts b/web/src/lib/chat/spacetime.svelte.ts index 1b787ab..237a12e 100644 --- a/web/src/lib/chat/spacetime.svelte.ts +++ b/web/src/lib/chat/spacetime.svelte.ts @@ -122,6 +122,17 @@ export function createSpacetimeChat( } } + async function enrichMessageFromPg(messageId: string) { + try { + const res = await fetch(`/api/messages/${messageId}/metadata`); + if (!res.ok) return; + const meta: { edited_at: string | null; metadata: any } = await res.json(); + messages = messages.map(m => + m.id === messageId ? { ...m, edited_at: meta.edited_at, metadata: meta.metadata } : m + ); + } catch { /* ikke kritisk */ } + } + function connectRealtime() { try { conn = DbConnection.builder() @@ -177,6 +188,8 @@ export function createSpacetimeChat( messages = messages.map(m => m.id === newRow.id ? { ...m, body: newRow.body, edited_at: new Date().toISOString() } : m ); + // Hent metadata fra PG (ai_processed osv.) for den oppdaterte meldingen + enrichMessageFromPg(newRow.id); }); // Meldinger slettet diff --git a/web/src/routes/api/messages/[messageId]/metadata/+server.ts b/web/src/routes/api/messages/[messageId]/metadata/+server.ts new file mode 100644 index 0000000..41e0c8a --- /dev/null +++ b/web/src/routes/api/messages/[messageId]/metadata/+server.ts @@ -0,0 +1,22 @@ +import { json, error } from '@sveltejs/kit'; +import type { RequestHandler } from './$types'; +import { sql } from '$lib/server/db'; + +/** + * GET /api/messages/:messageId/metadata + * Returnerer edited_at og metadata for én melding. + */ +export const GET: RequestHandler = async ({ params, locals }) => { + if (!locals.workspace || !locals.user) error(401); + + const [row] = await sql` + SELECT m.edited_at, m.metadata + FROM messages m + JOIN nodes n ON n.id = m.id + WHERE m.id = ${params.messageId}::uuid + AND n.workspace_id = ${locals.workspace.id} + `; + + if (!row) error(404); + return json(row); +};