feat(tasks): linked tasks sync title and subtasks with their note in both directions
MindSift CI & Docker Release / Build, Test in Container & Push (push) Failing after 2m32s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Failing after 2m32s
Subtasks of a task linked to a note checkbox are tied 1:1 to checkboxes of that note (subtasks[].blockId), wherever they are moved. ReconcileDocTaskLinks now carries tick, title and subtasks from the note to the task and adopts new checkboxes directly under the task; SyncTaskToDoc carries tick, title and subtasks to the note and adds checkboxes for new subtasks. Deleting is not mirrored. Deepening a task ties its subtasks right away; saves without links keep the server's links. The sync response reports taskLinks/subtaskLinks; the editor shows an "Unteraufgabe" badge. v0.36.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f91926c208
commit
5a8922011d
20 files changed
+511
-53
No files matched your search
@@ -128,6 +128,7 @@ function sameBlocks(a: DocumentBlock[], b: DocumentBlock[]): boolean {
|
||||
!!x.collapsed !== !!y.collapsed ||
|
||||
(x.lang || '') !== (y.lang || '') ||
|
||||
(x.taskId || '') !== (y.taskId || '') ||
|
||||
(x.subtaskOf || '') !== (y.subtaskOf || '') ||
|
||||
(x.conflictOf || '') !== (y.conflictOf || '')
|
||||
) {
|
||||
return false;
|
||||
@@ -360,10 +361,12 @@ export const DocumentEditor: React.FC<DocumentEditorProps> = ({
|
||||
setBlocks(normalized);
|
||||
}
|
||||
const links = new Map<string, string>();
|
||||
const subtaskLinks = new Map<string, string>();
|
||||
for (const b of fetched.blocks || []) {
|
||||
if (b.taskId) links.set(b.id, b.taskId);
|
||||
if (b.subtaskOf) subtaskLinks.set(b.id, b.subtaskOf);
|
||||
}
|
||||
engineRef.current?.setTaskLinks(links);
|
||||
engineRef.current?.setTaskLinks(links, subtaskLinks);
|
||||
setLoading(false);
|
||||
onDocMetadataChange(fetched);
|
||||
|
||||
|
||||
Reference in new issue
Block a user