diff --git a/memento-note/components/notes-tabs-view.tsx b/memento-note/components/notes-tabs-view.tsx index 82c20a6..7087af8 100644 --- a/memento-note/components/notes-tabs-view.tsx +++ b/memento-note/components/notes-tabs-view.tsx @@ -613,31 +613,27 @@ export function NotesTabsView({ setItems((prev) => { const prevIds = prev.map((n) => n.id).join(',') const incomingIds = notes.map((n) => n.id).join(',') + const merge = (fresh: Note, local: Note) => { + const labelsChanged = JSON.stringify(fresh.labels?.sort()) !== JSON.stringify(local.labels?.sort()) + return { + ...fresh, + title: local.title || fresh.title, + content: local.content, + checkItems: local.checkItems, + labels: labelsChanged ? fresh.labels : local.labels + } + } if (prevIds === incomingIds) { return prev.map((p) => { const fresh = notes.find((n) => n.id === p.id) if (!fresh) return p - const labelsChanged = JSON.stringify(fresh.labels?.sort()) !== JSON.stringify(p.labels?.sort()) - return { - ...fresh, - title: p.title, - content: p.content, - checkItems: p.checkItems, - labels: labelsChanged ? fresh.labels : p.labels - } + return merge(fresh, p) }) } return notes.map((fresh) => { const local = prev.find((p) => p.id === fresh.id) if (!local) return fresh - const labelsChanged = JSON.stringify(fresh.labels?.sort()) !== JSON.stringify(local.labels?.sort()) - return { - ...fresh, - title: local.title, - content: local.content, - checkItems: local.checkItems, - labels: labelsChanged ? fresh.labels : local.labels - } + return merge(fresh, local) }) }) }, [notes])