Fiks revisjonshistorikk: invalider cache etter AI-vask, hent alltid ferske revisjoner

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-16 17:08:46 +01:00
parent 9277fc6012
commit c5bd0c0130
2 changed files with 24 additions and 7 deletions

View file

@ -63,16 +63,21 @@
}); });
if (!res.ok) return; if (!res.ok) return;
const { job_id } = await res.json(); const { job_id } = await res.json();
// Sett lokal processing-state umiddelbart // Sett lokal processing-state umiddelbart (via array-reassign for reaktivitet)
const msg = chat?.messages.find(m => m.id === messageId); if (chat) {
if (msg) msg.metadata = { ...msg.metadata, ai_processing: true }; const msgs = chat.messages;
const idx = msgs.findIndex(m => m.id === messageId);
if (idx >= 0) {
msgs[idx] = { ...msgs[idx], metadata: { ...msgs[idx].metadata, ai_processing: true } };
}
}
// Poll jobb-status // Poll jobb-status
pollJob(job_id); pollJob(job_id, messageId);
} catch { /* stille feil */ } } catch { /* stille feil */ }
} }
}; };
function pollJob(jobId: string) { function pollJob(jobId: string, messageId?: string) {
const interval = setInterval(async () => { const interval = setInterval(async () => {
try { try {
const res = await fetch(`/api/jobs/${jobId}`); const res = await fetch(`/api/jobs/${jobId}`);

View file

@ -203,6 +203,18 @@
let isAiProcessing = $derived(message.metadata?.ai_processing === true); let isAiProcessing = $derived(message.metadata?.ai_processing === true);
// Når AI-prosessering fullføres, invalider revisjonscache og vis nåværende versjon
let prevAiProcessing = $state(false);
$effect(() => {
const wasProcessing = prevAiProcessing;
prevAiProcessing = isAiProcessing;
if (wasProcessing && !isAiProcessing) {
// AI ferdig — invalider cache så neste klikk henter oppdaterte revisjoner
revisionsLoaded = false;
revisionIndex = -1;
}
});
// --- Revisjonshistorikk (generell — gjelder alle redigerte meldinger) --- // --- Revisjonshistorikk (generell — gjelder alle redigerte meldinger) ---
interface Revision { interface Revision {
@ -217,7 +229,6 @@
let revisionsLoaded = $state(false); let revisionsLoaded = $state(false);
async function loadRevisions() { async function loadRevisions() {
if (revisionsLoaded) return;
loadingRevisions = true; loadingRevisions = true;
try { try {
const res = await fetch(`/api/messages/${message.id}/revisions`); const res = await fetch(`/api/messages/${message.id}/revisions`);
@ -238,9 +249,10 @@
revisionIndex = -1; revisionIndex = -1;
return; return;
} }
// Alltid hent på nytt når bruker klikker (kan ha kommet nye revisjoner)
await loadRevisions(); await loadRevisions();
if (revisions.length > 0) { if (revisions.length > 0) {
revisionIndex = 0; // Vis nyeste revisjon (original) revisionIndex = 0; // Vis nyeste revisjon
} }
} }