feat: persist table columns on change (#1697)
* feat: persist table columns on change Closes #1580 * fix: fix drag-and-select on Table Options dropdown toggle
This commit is contained in:
@ -152,32 +152,34 @@ export const useTableViewFields = ({
|
||||
},
|
||||
});
|
||||
|
||||
const persistColumns = useCallback(async () => {
|
||||
if (!currentViewId) return;
|
||||
const persistColumns = useCallback(
|
||||
async (nextColumns: ColumnDefinition<ViewFieldMetadata>[]) => {
|
||||
if (!currentViewId) return;
|
||||
|
||||
const viewFieldsToCreate = tableColumns.filter(
|
||||
(column) => !savedTableColumnsByKey[column.key],
|
||||
);
|
||||
await createViewFields(viewFieldsToCreate);
|
||||
const viewFieldsToCreate = nextColumns.filter(
|
||||
(column) => !savedTableColumnsByKey[column.key],
|
||||
);
|
||||
await createViewFields(viewFieldsToCreate);
|
||||
|
||||
const viewFieldsToUpdate = tableColumns.filter(
|
||||
(column) =>
|
||||
savedTableColumnsByKey[column.key] &&
|
||||
(savedTableColumnsByKey[column.key].size !== column.size ||
|
||||
savedTableColumnsByKey[column.key].index !== column.index ||
|
||||
savedTableColumnsByKey[column.key].isVisible !== column.isVisible),
|
||||
);
|
||||
await updateViewFields(viewFieldsToUpdate);
|
||||
const viewFieldsToUpdate = nextColumns.filter(
|
||||
(column) =>
|
||||
savedTableColumnsByKey[column.key] &&
|
||||
(savedTableColumnsByKey[column.key].size !== column.size ||
|
||||
savedTableColumnsByKey[column.key].index !== column.index ||
|
||||
savedTableColumnsByKey[column.key].isVisible !== column.isVisible),
|
||||
);
|
||||
await updateViewFields(viewFieldsToUpdate);
|
||||
|
||||
return refetch();
|
||||
}, [
|
||||
createViewFields,
|
||||
currentViewId,
|
||||
refetch,
|
||||
savedTableColumnsByKey,
|
||||
tableColumns,
|
||||
updateViewFields,
|
||||
]);
|
||||
await refetch();
|
||||
},
|
||||
[
|
||||
createViewFields,
|
||||
currentViewId,
|
||||
refetch,
|
||||
savedTableColumnsByKey,
|
||||
updateViewFields,
|
||||
],
|
||||
);
|
||||
|
||||
return { createViewFields, persistColumns };
|
||||
};
|
||||
|
||||
@ -58,10 +58,15 @@ export const useTableViews = ({
|
||||
});
|
||||
|
||||
const submitCurrentView = async () => {
|
||||
await persistColumns();
|
||||
await persistFilters();
|
||||
await persistSorts();
|
||||
};
|
||||
|
||||
return { createView, deleteView, submitCurrentView, updateView };
|
||||
return {
|
||||
createView,
|
||||
deleteView,
|
||||
persistColumns,
|
||||
submitCurrentView,
|
||||
updateView,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user