feat(text-snippets): better reaction to removing templates

This commit is contained in:
Elian Doran 2025-06-17 17:19:50 +03:00
parent 3e40a35c19
commit 4f9bd970af
No known key found for this signature in database

View File

@ -46,28 +46,31 @@ async function handleContentUpdate(affectedNoteIds: string[]) {
const templateNoteIds = new Set(templateCache.keys()); const templateNoteIds = new Set(templateCache.keys());
const affectedTemplateNoteIds = templateNoteIds.intersection(updatedNoteIds); const affectedTemplateNoteIds = templateNoteIds.intersection(updatedNoteIds);
console.log("Got ", affectedTemplateNoteIds);
await froca.getNotes(affectedNoteIds); await froca.getNotes(affectedNoteIds);
let fullReloadNeeded = false; let fullReloadNeeded = false;
for (const affectedTemplateNoteId of affectedTemplateNoteIds) { for (const affectedTemplateNoteId of affectedTemplateNoteIds) {
const template = await froca.getNote(affectedTemplateNoteId); try {
if (!template) { const template = await froca.getNote(affectedTemplateNoteId);
console.warn("Unable to obtain template with ID ", affectedTemplateNoteId); if (!template) {
continue; console.warn("Unable to obtain template with ID ", affectedTemplateNoteId);
} continue;
}
const newTitle = template.title; const newTitle = template.title;
if (templateCache.get(affectedTemplateNoteId)?.title !== newTitle) { if (templateCache.get(affectedTemplateNoteId)?.title !== newTitle) {
fullReloadNeeded = true;
break;
}
templateCache.set(affectedTemplateNoteId, {
title: template.title,
content: await template.getContent()
});
} catch (e) {
// If a note was not found while updating the cache, it means we need to do a full reload.
fullReloadNeeded = true; fullReloadNeeded = true;
break;
} }
templateCache.set(affectedTemplateNoteId, {
title: template.title,
content: await template.getContent()
});
} }
if (fullReloadNeeded) { if (fullReloadNeeded) {
@ -77,14 +80,15 @@ async function handleContentUpdate(affectedNoteIds: string[]) {
export function updateTemplateCache(loadResults: LoadResults): boolean { export function updateTemplateCache(loadResults: LoadResults): boolean {
const affectedNoteIds = loadResults.getNoteIds(); const affectedNoteIds = loadResults.getNoteIds();
if (affectedNoteIds.length > 0) {
debouncedHandleContentUpdate(affectedNoteIds);
}
// React to creation or deletion of text snippets.
if (loadResults.getAttributeRows().find((attr) => if (loadResults.getAttributeRows().find((attr) =>
attr.type === "label" && attr.type === "label" &&
attr.name === "textSnippet")) { attr.name === "textSnippet")) {
handleFullReload(); handleFullReload();
} else if (affectedNoteIds.length > 0) {
// Update content and titles if one of the template notes were updated.
debouncedHandleContentUpdate(affectedNoteIds);
} }
return false; return false;