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:
Thaïs
2023-09-21 22:15:57 +02:00
committed by GitHub
parent 189bf4a627
commit ab0cdbf960
15 changed files with 149 additions and 158 deletions

View File

@ -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 };
};

View File

@ -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,
};
};