mirror of
https://github.com/docmost/docmost.git
synced 2026-06-15 22:48:42 +08:00
fix(base): don't override server sort with client-side position sort
This commit is contained in:
@@ -65,8 +65,20 @@ export function BaseTable({ baseId }: BaseTableProps) {
|
|||||||
|
|
||||||
const rows = useMemo(() => {
|
const rows = useMemo(() => {
|
||||||
const flat = flattenRows(rowsData);
|
const flat = flattenRows(rowsData);
|
||||||
return flat.sort((a, b) => (a.position < b.position ? -1 : a.position > b.position ? 1 : 0));
|
// When a sort is active, the server returns rows in the requested
|
||||||
}, [rowsData]);
|
// sort order via keyset pagination. Re-sorting by `position` on the
|
||||||
|
// client would override that with fractional-index order — visibly
|
||||||
|
// breaking the sort as more pages load. Only apply the position
|
||||||
|
// sort when no view sort is active (where it keeps
|
||||||
|
// optimistically-created and ws-pushed rows in place without a
|
||||||
|
// refetch).
|
||||||
|
if (activeSorts && activeSorts.length > 0) {
|
||||||
|
return flat;
|
||||||
|
}
|
||||||
|
return flat.sort((a, b) =>
|
||||||
|
a.position < b.position ? -1 : a.position > b.position ? 1 : 0,
|
||||||
|
);
|
||||||
|
}, [rowsData, activeSorts]);
|
||||||
|
|
||||||
const { table, persistViewConfig } = useBaseTable(base, rows, activeView);
|
const { table, persistViewConfig } = useBaseTable(base, rows, activeView);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user