chore(client/search): ensure all notes are loaded

This commit is contained in:
Elian Doran
2025-10-20 17:15:08 +03:00
parent 8939fac447
commit 3743fff21c

View File

@@ -2,7 +2,7 @@ import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "p
import { ViewModeProps } from "../interface"; import { ViewModeProps } from "../interface";
import { buildColumnDefinitions } from "./columns"; import { buildColumnDefinitions } from "./columns";
import getAttributeDefinitionInformation, { buildRowDefinitions, TableData } from "./rows"; import getAttributeDefinitionInformation, { buildRowDefinitions, TableData } from "./rows";
import { useLegacyWidget, useNoteLabelBoolean, useNoteLabelInt, useSpacedUpdate, useTriliumEvent } from "../../react/hooks"; import { useLegacyWidget, useNoteLabelBoolean, useNoteLabelInt, useTriliumEvent } from "../../react/hooks";
import Tabulator from "./tabulator"; import Tabulator from "./tabulator";
import { Tabulator as VanillaTabulator, SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, ColumnDefinition, DataTreeModule, Options, RowComponent} from 'tabulator-tables'; import { Tabulator as VanillaTabulator, SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, ColumnDefinition, DataTreeModule, Options, RowComponent} from 'tabulator-tables';
import { useContextMenu } from "./context_menu"; import { useContextMenu } from "./context_menu";
@@ -17,6 +17,7 @@ import AttributeDetailWidget from "../../attribute_widgets/attribute_detail";
import attributes from "../../../services/attributes"; import attributes from "../../../services/attributes";
import { RefObject } from "preact"; import { RefObject } from "preact";
import SpacedUpdate from "../../../services/spaced_update"; import SpacedUpdate from "../../../services/spaced_update";
import froca from "../../../services/froca";
interface TableConfig { interface TableConfig {
tableData: { tableData: {
@@ -132,25 +133,27 @@ function useData(note: FNote, noteIds: string[], viewConfig: TableConfig | undef
const [ isSorted ] = useNoteLabelBoolean(note, "sorted"); const [ isSorted ] = useNoteLabelBoolean(note, "sorted");
const [ movableRows, setMovableRows ] = useState(false); const [ movableRows, setMovableRows ] = useState(false);
function refresh() { async function refresh() {
const info = getAttributeDefinitionInformation(note); const info = getAttributeDefinitionInformation(note);
buildRowDefinitions(note, info, includeArchived, maxDepth).then(({ definitions: rowData, hasSubtree: hasChildren, rowNumber }) => { // Ensure all note IDs are loaded.
const columnDefs = buildColumnDefinitions({ await froca.getNotes(noteIds);
info,
movableRows, const { definitions: rowData, hasSubtree: hasChildren, rowNumber } = await buildRowDefinitions(note, info, includeArchived, maxDepth);
existingColumnData: viewConfig?.tableData?.columns, const columnDefs = buildColumnDefinitions({
rowNumberHint: rowNumber, info,
position: newAttributePosition.current ?? undefined movableRows,
}); existingColumnData: viewConfig?.tableData?.columns,
setColumnDefs(columnDefs); rowNumberHint: rowNumber,
setRowData(rowData); position: newAttributePosition.current ?? undefined
setHasChildren(hasChildren);
resetNewAttributePosition();
}); });
setColumnDefs(columnDefs);
setRowData(rowData);
setHasChildren(hasChildren);
resetNewAttributePosition();
} }
useEffect(refresh, [ note, noteIds, maxDepth, movableRows ]); useEffect(() => { refresh() }, [ note, noteIds, maxDepth, movableRows ]);
useTriliumEvent("entitiesReloaded", ({ loadResults}) => { useTriliumEvent("entitiesReloaded", ({ loadResults}) => {
// React to column changes. // React to column changes.