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;
const { job_id } = await res.json();
// Sett lokal processing-state umiddelbart
const msg = chat?.messages.find(m => m.id === messageId);
if (msg) msg.metadata = { ...msg.metadata, ai_processing: true };
// Sett lokal processing-state umiddelbart (via array-reassign for reaktivitet)
if (chat) {
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
pollJob(job_id);
pollJob(job_id, messageId);
} catch { /* stille feil */ }
}
};
function pollJob(jobId: string) {
function pollJob(jobId: string, messageId?: string) {
const interval = setInterval(async () => {
try {
const res = await fetch(`/api/jobs/${jobId}`);

View file

@ -203,6 +203,18 @@
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) ---
interface Revision {
@ -217,7 +229,6 @@
let revisionsLoaded = $state(false);
async function loadRevisions() {
if (revisionsLoaded) return;
loadingRevisions = true;
try {
const res = await fetch(`/api/messages/${message.id}/revisions`);
@ -238,9 +249,10 @@
revisionIndex = -1;
return;
}
// Alltid hent på nytt når bruker klikker (kan ha kommet nye revisjoner)
await loadRevisions();
if (revisions.length > 0) {
revisionIndex = 0; // Vis nyeste revisjon (original)
revisionIndex = 0; // Vis nyeste revisjon
}
}