diff --git a/apps/client/src/widgets/react/hooks.tsx b/apps/client/src/widgets/react/hooks.tsx index 9a688c10e..e3e750c4a 100644 --- a/apps/client/src/widgets/react/hooks.tsx +++ b/apps/client/src/widgets/react/hooks.tsx @@ -1011,17 +1011,27 @@ async function isNoteReadOnly(note: FNote, noteContext: NoteContext) { export function useChildNotes(parentNoteId: string | undefined) { const [ childNotes, setChildNotes ] = useState([]); - useEffect(() => { - (async function() { - let childNotes: FNote[] | undefined; - if (parentNoteId) { - const parentNote = await froca.getNote(parentNoteId); - childNotes = await parentNote?.getChildNotes(); - } - setChildNotes(childNotes ?? []); - })(); + + const refresh = useCallback(async () => { + let childNotes: FNote[] | undefined; + if (parentNoteId) { + const parentNote = await froca.getNote(parentNoteId); + childNotes = await parentNote?.getChildNotes(); + } + setChildNotes(childNotes ?? []); }, [ parentNoteId ]); + useEffect(() => { + refresh(); + }, [ refresh ]); + + // Refresh on branch changes. + useTriliumEvent("entitiesReloaded", ({ loadResults }) => { + if (parentNoteId && loadResults.getBranchRows().some(branch => branch.parentNoteId === parentNoteId)) { + refresh(); + } + }); + return childNotes; }