3157 refactor scoped states to move to v3 (#3180)
* renaming * renaming * create getDropdownScopeInjectors * update useDropdown * create internal hooks folder * update record-table states to be scoped states * update record-table selectors to be scoped selectors * create utils scope injector * refactor record-table wip * refactor record-table wip * wip * inject scopeId in selectors * update intenal hooks * update intenal hooks * update intenal hooks * update intenal hooks * update intenal hooks * update intenal hooks * update internal hooks * update internal hooks * update internal hooks * update internal hooks * update useTableColumns * update states and hooks * refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * refactoring * fix scopeId not in context * fix lint errors * fix error in story * fix errors: wip * fix errors * fix error * fix jest test * fix scopeId not defined * fix jest test * Bug fixes --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -7,13 +7,17 @@ import { turnSortsIntoOrderBy } from '@/object-record/object-sort-dropdown/utils
|
||||
import { turnObjectDropdownFilterIntoQueryFilter } from '@/object-record/record-filter/utils/turnObjectDropdownFilterIntoQueryFilter';
|
||||
import { useRecordTableScopedStates } from '@/object-record/record-table/hooks/internal/useRecordTableScopedStates';
|
||||
import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable';
|
||||
import { isRecordTableInitialLoadingState } from '@/object-record/record-table/states/isRecordTableInitialLoadingState';
|
||||
import { getRecordTableScopeInjector } from '@/object-record/record-table/utils/getRecordTableScopeInjector';
|
||||
import { signInBackgroundMockCompanies } from '@/sign-in-background-mock/constants/signInBackgroundMockCompanies';
|
||||
|
||||
import { useFindManyRecords } from './useFindManyRecords';
|
||||
|
||||
export const useObjectRecordTable = () => {
|
||||
const { scopeId: objectNamePlural, setRecordTableData } = useRecordTable();
|
||||
const {
|
||||
scopeId: objectNamePlural,
|
||||
setRecordTableData,
|
||||
setIsRecordTableInitialLoading,
|
||||
} = useRecordTable();
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
|
||||
const { objectNameSingular } = useObjectNameSingularFromPlural({
|
||||
@ -25,8 +29,26 @@ export const useObjectRecordTable = () => {
|
||||
objectNameSingular,
|
||||
},
|
||||
);
|
||||
const { tableFiltersState, tableSortsState, tableLastRowVisibleState } =
|
||||
useRecordTableScopedStates();
|
||||
|
||||
const {
|
||||
tableFiltersScopeInjector,
|
||||
tableSortsScopeInjector,
|
||||
tableLastRowVisibleScopeInjector,
|
||||
} = getRecordTableScopeInjector();
|
||||
|
||||
const { injectStateWithRecordTableScopeId } = useRecordTableScopedStates();
|
||||
|
||||
const tableFiltersState = injectStateWithRecordTableScopeId(
|
||||
tableFiltersScopeInjector,
|
||||
);
|
||||
|
||||
const tableSortsState = injectStateWithRecordTableScopeId(
|
||||
tableSortsScopeInjector,
|
||||
);
|
||||
|
||||
const tableLastRowVisibleState = injectStateWithRecordTableScopeId(
|
||||
tableLastRowVisibleScopeInjector,
|
||||
);
|
||||
|
||||
const tableFilters = useRecoilValue(tableFiltersState);
|
||||
const tableSorts = useRecoilValue(tableSortsState);
|
||||
@ -42,10 +64,6 @@ export const useObjectRecordTable = () => {
|
||||
foundObjectMetadataItem?.fields ?? [],
|
||||
);
|
||||
|
||||
const setIsRecordTableInitialLoading = useSetRecoilState(
|
||||
isRecordTableInitialLoadingState,
|
||||
);
|
||||
|
||||
const { records, loading, fetchMoreRecords, queryStateIdentifier } =
|
||||
useFindManyRecords({
|
||||
objectNameSingular,
|
||||
|
||||
@ -8,9 +8,10 @@ import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObje
|
||||
import { entityFieldsFamilyState } from '@/object-record/field/states/entityFieldsFamilyState';
|
||||
import { useDeleteManyRecords } from '@/object-record/hooks/useDeleteManyRecords';
|
||||
import { useExecuteQuickActionOnOneRecord } from '@/object-record/hooks/useExecuteQuickActionOnOneRecord';
|
||||
import { useRecordTableScopedStates } from '@/object-record/record-table/hooks/internal/useRecordTableScopedStates';
|
||||
import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable';
|
||||
import { RecordTableScopeInternalContext } from '@/object-record/record-table/scopes/scope-internal-context/RecordTableScopeInternalContext';
|
||||
import { selectedRowIdsSelector } from '@/object-record/record-table/states/selectors/selectedRowIdsSelector';
|
||||
import { getRecordTableScopeInjector } from '@/object-record/record-table/utils/getRecordTableScopeInjector';
|
||||
import {
|
||||
IconCheckbox,
|
||||
IconHeart,
|
||||
@ -41,12 +42,25 @@ export const useRecordTableContextMenuEntries = (
|
||||
const setContextMenuEntries = useSetRecoilState(contextMenuEntriesState);
|
||||
const setActionBarEntriesState = useSetRecoilState(actionBarEntriesState);
|
||||
|
||||
const { selectedRowIdsScopeInjector } = getRecordTableScopeInjector();
|
||||
|
||||
const {
|
||||
injectSelectorWithRecordTableScopeId,
|
||||
injectSelectorSnapshotValueWithRecordTableScopeId,
|
||||
} = useRecordTableScopedStates(scopeId);
|
||||
|
||||
const selectedRowIdsSelector = injectSelectorWithRecordTableScopeId(
|
||||
selectedRowIdsScopeInjector,
|
||||
);
|
||||
|
||||
const selectedRowIds = useRecoilValue(selectedRowIdsSelector);
|
||||
|
||||
const { scopeId: objectNamePlural, resetTableRowSelection } = useRecordTable({
|
||||
const { resetTableRowSelection } = useRecordTable({
|
||||
recordTableScopeId: scopeId,
|
||||
});
|
||||
|
||||
const objectNamePlural = scopeId;
|
||||
|
||||
const { objectNameSingular } = useObjectNameSingularFromPlural({
|
||||
objectNamePlural,
|
||||
});
|
||||
@ -61,9 +75,10 @@ export const useRecordTableContextMenuEntries = (
|
||||
: 'Custom';
|
||||
|
||||
const handleFavoriteButtonClick = useRecoilCallback(({ snapshot }) => () => {
|
||||
const selectedRowIds = snapshot
|
||||
.getLoadable(selectedRowIdsSelector)
|
||||
.getValue();
|
||||
const selectedRowIds = injectSelectorSnapshotValueWithRecordTableScopeId(
|
||||
snapshot,
|
||||
selectedRowIdsScopeInjector,
|
||||
);
|
||||
|
||||
const selectedRowId = selectedRowIds.length === 1 ? selectedRowIds[0] : '';
|
||||
|
||||
@ -97,22 +112,31 @@ export const useRecordTableContextMenuEntries = (
|
||||
const handleDeleteClick = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
async () => {
|
||||
const rowIdsToDelete = snapshot
|
||||
.getLoadable(selectedRowIdsSelector)
|
||||
.getValue();
|
||||
const rowIdsToDelete =
|
||||
injectSelectorSnapshotValueWithRecordTableScopeId(
|
||||
snapshot,
|
||||
selectedRowIdsScopeInjector,
|
||||
);
|
||||
|
||||
resetTableRowSelection();
|
||||
await deleteManyRecords(rowIdsToDelete);
|
||||
},
|
||||
[deleteManyRecords, resetTableRowSelection],
|
||||
[
|
||||
deleteManyRecords,
|
||||
injectSelectorSnapshotValueWithRecordTableScopeId,
|
||||
resetTableRowSelection,
|
||||
selectedRowIdsScopeInjector,
|
||||
],
|
||||
);
|
||||
|
||||
const handleExecuteQuickActionOnClick = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
async () => {
|
||||
const rowIdsToExecuteQuickActionOn = snapshot
|
||||
.getLoadable(selectedRowIdsSelector)
|
||||
.getValue();
|
||||
const rowIdsToExecuteQuickActionOn =
|
||||
injectSelectorSnapshotValueWithRecordTableScopeId(
|
||||
snapshot,
|
||||
selectedRowIdsScopeInjector,
|
||||
);
|
||||
|
||||
resetTableRowSelection();
|
||||
await Promise.all(
|
||||
@ -121,7 +145,12 @@ export const useRecordTableContextMenuEntries = (
|
||||
}),
|
||||
);
|
||||
},
|
||||
[executeQuickActionOnOneRecord, resetTableRowSelection],
|
||||
[
|
||||
executeQuickActionOnOneRecord,
|
||||
injectSelectorSnapshotValueWithRecordTableScopeId,
|
||||
resetTableRowSelection,
|
||||
selectedRowIdsScopeInjector,
|
||||
],
|
||||
);
|
||||
|
||||
const dataExecuteQuickActionOnmentEnabled = useIsFeatureEnabled(
|
||||
@ -129,7 +158,7 @@ export const useRecordTableContextMenuEntries = (
|
||||
);
|
||||
|
||||
const openCreateActivityDrawer =
|
||||
useOpenCreateActivityDrawerForSelectedRowIds();
|
||||
useOpenCreateActivityDrawerForSelectedRowIds(scopeId);
|
||||
|
||||
return {
|
||||
setContextMenuEntries: useCallback(() => {
|
||||
|
||||
Reference in New Issue
Block a user