fix: dynamic sidebar tree refresh after import
- reloadTreePreservingExpanded no longer replaces the whole tree, only patches children of expanded nodes in-place - New refreshParentNode(nodeId) function updates a single parent's children - createFile, duplicateItem, confirmImport use refreshParentNode instead of reloadTreePreservingExpanded - No intermediate render where children are lost
This commit is contained in:
parent
81405ed61b
commit
3c9b9edf8c
File diff suppressed because one or more lines are too long
|
|
@ -16,7 +16,7 @@
|
|||
background: #13131f;
|
||||
}
|
||||
</style>
|
||||
<script type="module" crossorigin src="/assets/main-BMgCQPLa.js"></script>
|
||||
<script type="module" crossorigin src="/assets/main-BZ3I06Px.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/main-DsSP02cl.css">
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@
|
|||
const parentId = currentFolderId || selectedNode.id
|
||||
await wailsCall('CreateEmptyFile', parentId, name.trim())
|
||||
await loadFolder(parentId)
|
||||
await reloadTreePreservingExpanded()
|
||||
await refreshParentNode(parentId)
|
||||
} catch (e) {
|
||||
error = String(e)
|
||||
}
|
||||
|
|
@ -327,7 +327,7 @@
|
|||
await wailsCall('DuplicateNode', id)
|
||||
const parentId = currentFolderId || selectedNode.id
|
||||
await loadFolder(parentId)
|
||||
await reloadTreePreservingExpanded()
|
||||
await refreshParentNode(parentId)
|
||||
} catch (e) {
|
||||
error = String(e)
|
||||
}
|
||||
|
|
@ -772,16 +772,20 @@
|
|||
}
|
||||
|
||||
async function reloadTreePreservingExpanded() {
|
||||
workspaceTree = await wailsCall('ListWorkspaceTree') || []
|
||||
for (const nodeId of Object.keys(expanded)) {
|
||||
if (expanded[nodeId]) {
|
||||
const children = await wailsCall('ListWorkspaceChildren', nodeId) || []
|
||||
setNodeChildren(workspaceTree, nodeId, children)
|
||||
}
|
||||
const expandedIds = Object.keys(expanded).filter(id => expanded[id])
|
||||
for (const nodeId of expandedIds) {
|
||||
const children = await wailsCall('ListWorkspaceChildren', nodeId) || []
|
||||
setNodeChildren(workspaceTree, nodeId, children)
|
||||
}
|
||||
workspaceTree = [...workspaceTree]
|
||||
}
|
||||
|
||||
async function refreshParentNode(nodeId) {
|
||||
const children = await wailsCall('ListWorkspaceChildren', nodeId) || []
|
||||
setNodeChildren(workspaceTree, nodeId, children)
|
||||
workspaceTree = [...workspaceTree]
|
||||
}
|
||||
|
||||
// ===== Notes =====
|
||||
function openCreateNote() { showCreateNote = true; newNoteTitle = '' }
|
||||
function cancelCreateNote() { showCreateNote = false; newNoteTitle = '' }
|
||||
|
|
@ -907,7 +911,7 @@
|
|||
await Promise.all([
|
||||
loadTabData(selectedNode.id),
|
||||
loadFolder(selectedNode.id),
|
||||
reloadTreePreservingExpanded(),
|
||||
refreshParentNode(selectedNode.id),
|
||||
])
|
||||
} catch (e) {
|
||||
error = String(e)
|
||||
|
|
|
|||
Loading…
Reference in New Issue