diff --git a/Journal.App/src/routes/+page.svelte b/Journal.App/src/routes/+page.svelte index 288e8ca..72903bf 100644 --- a/Journal.App/src/routes/+page.svelte +++ b/Journal.App/src/routes/+page.svelte @@ -72,6 +72,7 @@ "entries/daily-notes": "# Daily Notes\n\nStart writing today's entry...", }; + let savedDocumentContent: Record = { ...openDocuments }; let modalOpen = false; let modalTitle = ""; let modalMessage = ""; @@ -335,6 +336,7 @@ if (!activeDocumentId) return; const content = openDocuments[activeDocumentId]; if (!content?.trim()) return; + if (savedDocumentContent[activeDocumentId] === content) return; try { if ( @@ -357,6 +359,8 @@ ); const { [activeDocumentId]: _, ...rest } = openDocuments; openDocuments = rest; + const { [activeDocumentId]: __, ...savedRest } = savedDocumentContent; + savedDocumentContent = savedRest; activeDocumentId = ""; activeDocumentLabel = ""; editMode = false; @@ -371,6 +375,10 @@ content, filePath, }); + savedDocumentContent = { + ...savedDocumentContent, + [activeDocumentId]: content, + }; templateRefreshToken += 1; } else if ( selectedSection === "entries" && @@ -385,8 +393,18 @@ if (saved && saved.id !== activeDocumentId) { const { [activeDocumentId]: _, ...rest } = openDocuments; openDocuments = { ...rest, [saved.id]: saved.initialContent }; + const { [activeDocumentId]: __, ...savedRest } = savedDocumentContent; + savedDocumentContent = { + ...savedRest, + [saved.id]: saved.initialContent, + }; activeDocumentId = saved.id; activeDocumentLabel = saved.label; + } else { + savedDocumentContent = { + ...savedDocumentContent, + [activeDocumentId]: content, + }; } } else if ( selectedSection === "lists" && @@ -394,6 +412,10 @@ !activeDocumentId.startsWith("lists/draft-") ) { await updateListByStoreId(activeDocumentId, undefined, content); + savedDocumentContent = { + ...savedDocumentContent, + [activeDocumentId]: content, + }; } } catch { // best-effort save @@ -496,6 +518,11 @@ [resolvedDoc.id]: resolvedDoc.initialContent, }; } + savedDocumentContent = { + ...savedDocumentContent, + [resolvedDoc.id]: + openDocuments[resolvedDoc.id] ?? resolvedDoc.initialContent, + }; activeDocumentId = resolvedDoc.id; activeDocumentLabel = resolvedDoc.label; } @@ -523,6 +550,8 @@ function handleDeleteDocument(id: string) { const { [id]: _, ...remaining } = openDocuments; openDocuments = remaining; + const { [id]: __, ...savedRemaining } = savedDocumentContent; + savedDocumentContent = savedRemaining; } async function performDelete(id: string) {