Skip document save on tab switch when content is unchanged
This commit is contained in:
parent
3a4fe86e20
commit
cde37b814d
@ -72,6 +72,7 @@
|
|||||||
"entries/daily-notes":
|
"entries/daily-notes":
|
||||||
"# Daily Notes\n\nStart writing today's entry...",
|
"# Daily Notes\n\nStart writing today's entry...",
|
||||||
};
|
};
|
||||||
|
let savedDocumentContent: Record<string, string> = { ...openDocuments };
|
||||||
let modalOpen = false;
|
let modalOpen = false;
|
||||||
let modalTitle = "";
|
let modalTitle = "";
|
||||||
let modalMessage = "";
|
let modalMessage = "";
|
||||||
@ -335,6 +336,7 @@
|
|||||||
if (!activeDocumentId) return;
|
if (!activeDocumentId) return;
|
||||||
const content = openDocuments[activeDocumentId];
|
const content = openDocuments[activeDocumentId];
|
||||||
if (!content?.trim()) return;
|
if (!content?.trim()) return;
|
||||||
|
if (savedDocumentContent[activeDocumentId] === content) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (
|
if (
|
||||||
@ -357,6 +359,8 @@
|
|||||||
);
|
);
|
||||||
const { [activeDocumentId]: _, ...rest } = openDocuments;
|
const { [activeDocumentId]: _, ...rest } = openDocuments;
|
||||||
openDocuments = rest;
|
openDocuments = rest;
|
||||||
|
const { [activeDocumentId]: __, ...savedRest } = savedDocumentContent;
|
||||||
|
savedDocumentContent = savedRest;
|
||||||
activeDocumentId = "";
|
activeDocumentId = "";
|
||||||
activeDocumentLabel = "";
|
activeDocumentLabel = "";
|
||||||
editMode = false;
|
editMode = false;
|
||||||
@ -371,6 +375,10 @@
|
|||||||
content,
|
content,
|
||||||
filePath,
|
filePath,
|
||||||
});
|
});
|
||||||
|
savedDocumentContent = {
|
||||||
|
...savedDocumentContent,
|
||||||
|
[activeDocumentId]: content,
|
||||||
|
};
|
||||||
templateRefreshToken += 1;
|
templateRefreshToken += 1;
|
||||||
} else if (
|
} else if (
|
||||||
selectedSection === "entries" &&
|
selectedSection === "entries" &&
|
||||||
@ -385,8 +393,18 @@
|
|||||||
if (saved && saved.id !== activeDocumentId) {
|
if (saved && saved.id !== activeDocumentId) {
|
||||||
const { [activeDocumentId]: _, ...rest } = openDocuments;
|
const { [activeDocumentId]: _, ...rest } = openDocuments;
|
||||||
openDocuments = { ...rest, [saved.id]: saved.initialContent };
|
openDocuments = { ...rest, [saved.id]: saved.initialContent };
|
||||||
|
const { [activeDocumentId]: __, ...savedRest } = savedDocumentContent;
|
||||||
|
savedDocumentContent = {
|
||||||
|
...savedRest,
|
||||||
|
[saved.id]: saved.initialContent,
|
||||||
|
};
|
||||||
activeDocumentId = saved.id;
|
activeDocumentId = saved.id;
|
||||||
activeDocumentLabel = saved.label;
|
activeDocumentLabel = saved.label;
|
||||||
|
} else {
|
||||||
|
savedDocumentContent = {
|
||||||
|
...savedDocumentContent,
|
||||||
|
[activeDocumentId]: content,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
selectedSection === "lists" &&
|
selectedSection === "lists" &&
|
||||||
@ -394,6 +412,10 @@
|
|||||||
!activeDocumentId.startsWith("lists/draft-")
|
!activeDocumentId.startsWith("lists/draft-")
|
||||||
) {
|
) {
|
||||||
await updateListByStoreId(activeDocumentId, undefined, content);
|
await updateListByStoreId(activeDocumentId, undefined, content);
|
||||||
|
savedDocumentContent = {
|
||||||
|
...savedDocumentContent,
|
||||||
|
[activeDocumentId]: content,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
// best-effort save
|
// best-effort save
|
||||||
@ -496,6 +518,11 @@
|
|||||||
[resolvedDoc.id]: resolvedDoc.initialContent,
|
[resolvedDoc.id]: resolvedDoc.initialContent,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
savedDocumentContent = {
|
||||||
|
...savedDocumentContent,
|
||||||
|
[resolvedDoc.id]:
|
||||||
|
openDocuments[resolvedDoc.id] ?? resolvedDoc.initialContent,
|
||||||
|
};
|
||||||
activeDocumentId = resolvedDoc.id;
|
activeDocumentId = resolvedDoc.id;
|
||||||
activeDocumentLabel = resolvedDoc.label;
|
activeDocumentLabel = resolvedDoc.label;
|
||||||
}
|
}
|
||||||
@ -523,6 +550,8 @@
|
|||||||
function handleDeleteDocument(id: string) {
|
function handleDeleteDocument(id: string) {
|
||||||
const { [id]: _, ...remaining } = openDocuments;
|
const { [id]: _, ...remaining } = openDocuments;
|
||||||
openDocuments = remaining;
|
openDocuments = remaining;
|
||||||
|
const { [id]: __, ...savedRemaining } = savedDocumentContent;
|
||||||
|
savedDocumentContent = savedRemaining;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function performDelete(id: string) {
|
async function performDelete(id: string) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user