Rename fieldId and objectId into fieldMetadataId and objectMetadataId (#2421)

* Rename fieldId and objectId into fieldMetadataId and objectMetadataId

* Fix tests
This commit is contained in:
Charles Bochet
2023-11-10 14:35:18 +01:00
committed by GitHub
parent 57cfd4db45
commit 618513afcd
136 changed files with 544 additions and 402 deletions

View File

@ -126,12 +126,12 @@ export const ViewBarDetails = ({
{currentViewSorts?.map((sort) => {
return (
<SortOrFilterChip
key={sort.fieldId}
testId={sort.fieldId}
key={sort.fieldMetadataId}
testId={sort.fieldMetadataId}
labelValue={sort.definition.label}
Icon={sort.direction === 'desc' ? IconArrowDown : IconArrowUp}
isSort
onRemove={() => removeViewSort(sort.fieldId)}
onRemove={() => removeViewSort(sort.fieldMetadataId)}
/>
);
})}
@ -143,15 +143,15 @@ export const ViewBarDetails = ({
{currentViewFilters?.map((filter) => {
return (
<SortOrFilterChip
key={filter.fieldId}
testId={filter.fieldId}
key={filter.fieldMetadataId}
testId={filter.fieldMetadataId}
labelKey={filter.definition.label}
labelValue={`${getOperandLabelShort(filter.operand)} ${
filter.displayValue
}`}
Icon={filter.definition.Icon}
onRemove={() => {
removeViewFilter(filter.fieldId);
removeViewFilter(filter.fieldMetadataId);
}}
/>
);

View File

@ -28,21 +28,24 @@ export const ViewBarEffect = () => {
const [searchParams] = useSearchParams();
const currentViewIdFromUrl = searchParams.get('view');
const { viewTypeState, viewObjectIdState } = useViewScopedStates();
const { viewTypeState, viewObjectMetadataIdState } = useViewScopedStates();
const viewType = useRecoilValue(viewTypeState);
const viewObjectId = useRecoilValue(viewObjectIdState);
const viewObjectMetadataId = useRecoilValue(viewObjectMetadataIdState);
useFindManyObjects({
objectNamePlural: 'viewsV2',
filter: { type: { eq: viewType }, objectId: { eq: viewObjectId } },
filter: {
type: { eq: viewType },
objectMetadataId: { eq: viewObjectMetadataId },
},
onCompleted: useRecoilCallback(
({ snapshot, set }) =>
async (data: PaginatedObjectTypeResults<View>) => {
const nextViews = data.edges.map((view) => ({
id: view.node.id,
name: view.node.name,
objectId: view.node.objectId,
objectMetadataId: view.node.objectMetadataId,
}));
const { viewsState } = getViewScopedStatesFromSnapshot({
@ -132,7 +135,8 @@ export const ViewBarEffect = () => {
const queriedViewFilters = data.edges
.map(({ node }) => {
const availableFilterDefinition = availableFilterDefinitions.find(
(filterDefinition) => filterDefinition.fieldId === node.fieldId,
(filterDefinition) =>
filterDefinition.fieldMetadataId === node.fieldMetadataId,
);
if (!availableFilterDefinition) return null;
@ -185,14 +189,14 @@ export const ViewBarEffect = () => {
const queriedViewSorts = data.edges
.map(({ node }) => {
const availableSortDefinition = availableSortDefinitions.find(
(sort) => sort.fieldId === node.fieldId,
(sort) => sort.fieldMetadataId === node.fieldMetadataId,
);
if (!availableSortDefinition) return null;
return {
id: node.id,
fieldId: node.fieldId,
fieldMetadataId: node.fieldMetadataId,
direction: node.direction,
definition: availableSortDefinition,
};

View File

@ -97,12 +97,12 @@ export const ViewFieldsVisibilityDropdownSection = ({
.sort((a, b) => a.position - b.position)
.map((field, index) => (
<DraggableItem
key={field.fieldId}
draggableId={field.fieldId}
key={field.fieldMetadataId}
draggableId={field.fieldMetadataId}
index={index + 1}
itemComponent={
<MenuItemDraggable
key={field.fieldId}
key={field.fieldMetadataId}
LeftIcon={field.Icon}
iconButtons={getIconButtons(index + 1, field)}
isTooltipOpen={openToolTipIndex === index + 1}
@ -120,7 +120,7 @@ export const ViewFieldsVisibilityDropdownSection = ({
) : (
fields.map((field, index) => (
<MenuItem
key={field.fieldId}
key={field.fieldMetadataId}
LeftIcon={field.Icon}
iconButtons={getIconButtons(index, field)}
isTooltipOpen={openToolTipIndex === index}

View File

@ -16,7 +16,7 @@ export const useViewFields = (viewScopeId: string) => {
const persistViewFields = useRecoilCallback(
({ snapshot }) =>
async (viewFieldsToPersist: ViewField[], viewId?: string) => {
const { viewObjectId, currentViewId, savedViewFieldsByKey } =
const { viewObjectMetadataId, currentViewId, savedViewFieldsByKey } =
getViewScopedStateValuesFromSnapshot({
snapshot,
viewScopeId,
@ -25,7 +25,7 @@ export const useViewFields = (viewScopeId: string) => {
const viewIdToPersist = viewId ?? currentViewId;
if (!currentViewId || !savedViewFieldsByKey || !viewObjectId) {
if (!currentViewId || !savedViewFieldsByKey || !viewObjectMetadataId) {
return;
}
@ -40,7 +40,7 @@ export const useViewFields = (viewScopeId: string) => {
mutation: createOneMutation,
variables: {
input: {
fieldId: viewField.fieldId,
fieldMetadataId: viewField.fieldMetadataId,
viewId: viewIdToPersist,
isVisible: viewField.isVisible,
size: viewField.size,
@ -76,18 +76,18 @@ export const useViewFields = (viewScopeId: string) => {
};
const viewFieldsToCreate = viewFieldsToPersist.filter(
(viewField) => !savedViewFieldsByKey[viewField.fieldId],
(viewField) => !savedViewFieldsByKey[viewField.fieldMetadataId],
);
const viewFieldsToUpdate = viewFieldsToPersist.filter(
(viewFieldToPersit) =>
savedViewFieldsByKey[viewFieldToPersit.fieldId] &&
(savedViewFieldsByKey[viewFieldToPersit.fieldId].size !==
savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId] &&
(savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId].size !==
viewFieldToPersit.size ||
savedViewFieldsByKey[viewFieldToPersit.fieldId].position !==
viewFieldToPersit.position ||
savedViewFieldsByKey[viewFieldToPersit.fieldId].isVisible !==
viewFieldToPersit.isVisible),
savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId]
.position !== viewFieldToPersit.position ||
savedViewFieldsByKey[viewFieldToPersit.fieldMetadataId]
.isVisible !== viewFieldToPersit.isVisible),
);
await _createViewFields(viewFieldsToCreate);

View File

@ -53,7 +53,7 @@ export const useViewFilters = (viewScopeId: string) => {
mutation: createOneMutation,
variables: {
input: {
fieldId: viewFilter.fieldId,
fieldMetadataId: viewFilter.fieldMetadataId,
viewId: viewId ?? currentViewId,
value: viewFilter.value,
displayValue: viewFilter.displayValue,
@ -102,19 +102,23 @@ export const useViewFilters = (viewScopeId: string) => {
};
const filtersToCreate = currentViewFilters.filter(
(filter) => !savedViewFiltersByKey[filter.fieldId],
(filter) => !savedViewFiltersByKey[filter.fieldMetadataId],
);
await createViewFilters(filtersToCreate);
const filtersToUpdate = currentViewFilters.filter(
(filter) =>
savedViewFiltersByKey[filter.fieldId] &&
(savedViewFiltersByKey[filter.fieldId].operand !== filter.operand ||
savedViewFiltersByKey[filter.fieldId].value !== filter.value),
savedViewFiltersByKey[filter.fieldMetadataId] &&
(savedViewFiltersByKey[filter.fieldMetadataId].operand !==
filter.operand ||
savedViewFiltersByKey[filter.fieldMetadataId].value !==
filter.value),
);
await updateViewFilters(filtersToUpdate);
const filterKeys = currentViewFilters.map((filter) => filter.fieldId);
const filterKeys = currentViewFilters.map(
(filter) => filter.fieldMetadataId,
);
const filterKeysToDelete = Object.keys(savedViewFiltersByKey).filter(
(previousFilterKey) => !filterKeys.includes(previousFilterKey),
);
@ -159,12 +163,13 @@ export const useViewFilters = (viewScopeId: string) => {
}
const existingSavedFilterId =
savedViewFiltersByKey[filterToUpsert.fieldId]?.id;
savedViewFiltersByKey[filterToUpsert.fieldMetadataId]?.id;
set(currentViewFiltersState, (filters) => {
const newViewFilters = produce(filters, (filtersDraft) => {
const existingFilterIndex = filtersDraft.findIndex(
(filter) => filter.fieldId === filterToUpsert.fieldId,
(filter) =>
filter.fieldMetadataId === filterToUpsert.fieldMetadataId,
);
if (existingFilterIndex === -1) {
@ -189,7 +194,7 @@ export const useViewFilters = (viewScopeId: string) => {
const removeViewFilter = useRecoilCallback(
({ snapshot, set }) =>
(fieldId: string) => {
(fieldMetadataId: string) => {
const { currentViewId, currentViewFilters, onViewFiltersChange } =
getViewScopedStateValuesFromSnapshot({
snapshot,
@ -201,7 +206,7 @@ export const useViewFilters = (viewScopeId: string) => {
}
const newViewFilters = currentViewFilters.filter((filter) => {
return filter.fieldId !== fieldId;
return filter.fieldMetadataId !== fieldMetadataId;
});
set(currentViewFiltersState, newViewFilters);
onViewFiltersChange?.(newViewFilters);

View File

@ -46,7 +46,7 @@ export const useViewScopedStates = (args?: { customViewScopeId?: string }) => {
savedViewSortsByKeySelector,
savedViewSortsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
viewsState,
} = getViewScopedStates({
@ -77,7 +77,7 @@ export const useViewScopedStates = (args?: { customViewScopeId?: string }) => {
savedViewSortsByKeySelector,
savedViewSortsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
viewsState,
};

View File

@ -54,7 +54,7 @@ export const useViewSorts = (viewScopeId: string) => {
mutation: createOneMutation,
variables: {
input: {
fieldId: viewSort.fieldId,
fieldMetadataId: viewSort.fieldMetadataId,
viewId: viewId ?? currentViewId,
direction: viewSort.direction,
},
@ -99,19 +99,20 @@ export const useViewSorts = (viewScopeId: string) => {
};
const sortsToCreate = currentViewSorts.filter(
(sort) => !savedViewSortsByKey[sort.fieldId],
(sort) => !savedViewSortsByKey[sort.fieldMetadataId],
);
await createViewSorts(sortsToCreate);
const sortsToUpdate = currentViewSorts.filter(
(sort) =>
savedViewSortsByKey[sort.fieldId] &&
savedViewSortsByKey[sort.fieldId].direction !== sort.direction,
savedViewSortsByKey[sort.fieldMetadataId] &&
savedViewSortsByKey[sort.fieldMetadataId].direction !==
sort.direction,
);
await updateViewSorts(sortsToUpdate);
const sortKeys = currentViewSorts.map((sort) => sort.fieldId);
const sortKeys = currentViewSorts.map((sort) => sort.fieldMetadataId);
const sortKeysToDelete = Object.keys(savedViewSortsByKey).filter(
(previousSortKey) => !sortKeys.includes(previousSortKey),
);
@ -155,12 +156,12 @@ export const useViewSorts = (viewScopeId: string) => {
}
const existingSavedSortId =
savedViewSortsByKey[sortToUpsert.fieldId]?.id;
savedViewSortsByKey[sortToUpsert.fieldMetadataId]?.id;
set(currentViewSortsState, (sorts) => {
const newViewSorts = produce(sorts, (sortsDraft) => {
const existingSortIndex = sortsDraft.findIndex(
(sort) => sort.fieldId === sortToUpsert.fieldId,
(sort) => sort.fieldMetadataId === sortToUpsert.fieldMetadataId,
);
if (existingSortIndex === -1) {
@ -182,7 +183,7 @@ export const useViewSorts = (viewScopeId: string) => {
const removeViewSort = useRecoilCallback(
({ snapshot, set }) =>
(fieldId: string) => {
(fieldMetadataId: string) => {
const { currentViewId, onViewSortsChange, currentViewSorts } =
getViewScopedStateValuesFromSnapshot({
snapshot,
@ -194,7 +195,7 @@ export const useViewSorts = (viewScopeId: string) => {
}
const newViewSorts = currentViewSorts.filter((filter) => {
return filter.fieldId !== fieldId;
return filter.fieldMetadataId !== fieldMetadataId;
});
set(currentViewSortsState, newViewSorts);
onViewSortsChange?.(newViewSorts);

View File

@ -19,14 +19,13 @@ export const useViews = (scopeId: string) => {
const createView = useRecoilCallback(
({ snapshot }) =>
async (view: Pick<View, 'id' | 'name'>) => {
const { viewObjectId, viewType } = getViewScopedStateValuesFromSnapshot(
{
const { viewObjectMetadataId, viewType } =
getViewScopedStateValuesFromSnapshot({
snapshot,
viewScopeId: scopeId,
},
);
});
if (!viewObjectId || !viewType) {
if (!viewObjectMetadataId || !viewType) {
return;
}
await apolloClient.mutate({
@ -34,7 +33,7 @@ export const useViews = (scopeId: string) => {
variables: {
input: {
...view,
objectId: viewObjectId,
objectMetadataId: viewObjectMetadataId,
type: viewType,
},
},

View File

@ -37,7 +37,7 @@ export const useView = (props?: UseViewProps) => {
availableFilterDefinitionsState,
availableSortDefinitionsState,
entityCountInCurrentViewState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
} = useViewScopedStates({
customViewScopeId: scopeId,
@ -72,7 +72,7 @@ export const useView = (props?: UseViewProps) => {
);
const setViewEditMode = useSetRecoilState(viewEditModeState);
const setViewObjectId = useSetRecoilState(viewObjectIdState);
const setViewObjectMetadataId = useSetRecoilState(viewObjectMetadataIdState);
const setViewType = useSetRecoilState(viewTypeState);
const [_, setSearchParams] = useSearchParams();
@ -267,7 +267,7 @@ export const useView = (props?: UseViewProps) => {
handleViewNameSubmit,
setViewEditMode,
setViewObjectId,
setViewObjectMetadataId,
setViewType,
setEntityCountInCurrentView,
setAvailableFieldDefinitions,

View File

@ -25,7 +25,7 @@ export const savedViewFieldByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId,
}),
).reduce<Record<string, ViewField>>(
(result, column) => ({ ...result, [column.fieldId]: column }),
(result, column) => ({ ...result, [column.fieldMetadataId]: column }),
{},
);
},

View File

@ -18,7 +18,7 @@ export const savedViewFiltersByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId,
}),
).reduce<Record<string, ViewFilter>>(
(result, filter) => ({ ...result, [filter.fieldId]: filter }),
(result, filter) => ({ ...result, [filter.fieldMetadataId]: filter }),
{},
);
},

View File

@ -18,7 +18,7 @@ export const savedViewSortsByKeyScopedFamilySelector = selectorFamily({
familyKey: viewId,
}),
).reduce<Record<string, ViewSort>>(
(result, sort) => ({ ...result, [sort.fieldId]: sort }),
(result, sort) => ({ ...result, [sort.fieldMetadataId]: sort }),
{},
);
},

View File

@ -1,6 +0,0 @@
import { createScopedState } from '@/ui/utilities/recoil-scope/utils/createScopedState';
export const viewObjectIdScopeState = createScopedState<string | undefined>({
key: 'viewObjectIdScopeState',
defaultValue: undefined,
});

View File

@ -0,0 +1,8 @@
import { createScopedState } from '@/ui/utilities/recoil-scope/utils/createScopedState';
export const viewObjectMetadataIdScopeState = createScopedState<
string | undefined
>({
key: 'viewObjectMetadataIdScopeState',
defaultValue: undefined,
});

View File

@ -1 +1 @@
export type View = { id: string; name: string; objectId: string };
export type View = { id: string; name: string; objectMetadataId: string };

View File

@ -3,7 +3,7 @@ import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinitio
export type ViewField = {
id: string;
fieldId: string;
fieldMetadataId: string;
position: number;
isVisible: boolean;
size: number;

View File

@ -4,7 +4,7 @@ import { ViewFilterOperand } from './ViewFilterOperand';
export type ViewFilter = {
id?: string;
fieldId: string;
fieldMetadataId: string;
operand: ViewFilterOperand;
value: string;
displayValue: string;

View File

@ -3,7 +3,7 @@ import { SortDirection } from '@/ui/object/object-sort-dropdown/types/SortDirect
export type ViewSort = {
id?: string;
fieldId: string;
fieldMetadataId: string;
direction: SortDirection;
definition: SortDefinition;
};

View File

@ -47,7 +47,7 @@ export const getViewScopedStateValuesFromSnapshot = ({
savedViewSortsByKeySelector,
savedViewSortsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
viewsState,
} = getViewScopedStates({
@ -99,7 +99,7 @@ export const getViewScopedStateValuesFromSnapshot = ({
),
savedViewSorts: getSnapshotValue(snapshot, savedViewSortsState),
viewEditMode: getSnapshotValue(snapshot, viewEditModeState),
viewObjectId: getSnapshotValue(snapshot, viewObjectIdState),
viewObjectMetadataId: getSnapshotValue(snapshot, viewObjectMetadataIdState),
viewType: getSnapshotValue(snapshot, viewTypeState),
views: getSnapshotValue(snapshot, viewsState),
};

View File

@ -47,7 +47,7 @@ export const getViewScopedStatesFromSnapshot = ({
savedViewSortsByKeySelector: savedViewSortsByKeySelector,
savedViewSortsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
viewsState,
} = getViewScopedStates({
@ -78,7 +78,7 @@ export const getViewScopedStatesFromSnapshot = ({
savedViewSortsByKeyReadOnlyState: savedViewSortsByKeySelector,
savedViewSortsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
viewsState,
};

View File

@ -24,7 +24,7 @@ import { savedViewFieldByKeyScopedFamilySelector } from '../../states/selectors/
import { savedViewFiltersByKeyScopedFamilySelector } from '../../states/selectors/savedViewFiltersByKeyScopedFamilySelector';
import { savedViewSortsByKeyScopedFamilySelector } from '../../states/selectors/savedViewSortsByKeyScopedFamilySelector';
import { viewEditModeScopedState } from '../../states/viewEditModeScopedState';
import { viewObjectIdScopeState } from '../../states/viewObjectIdScopeState';
import { viewObjectMetadataIdScopeState } from '../../states/viewObjectMetadataIdScopeState';
import { viewsScopedState } from '../../states/viewsScopedState';
import { viewTypeScopedState } from '../../states/viewTypeScopedState';
@ -42,7 +42,10 @@ export const getViewScopedStates = ({
const viewsState = getScopedState(viewsScopedState, viewScopeId);
const viewObjectIdState = getScopedState(viewObjectIdScopeState, viewScopeId);
const viewObjectMetadataIdState = getScopedState(
viewObjectMetadataIdScopeState,
viewScopeId,
);
const viewTypeState = getScopedState(viewTypeScopedState, viewScopeId);
@ -170,7 +173,7 @@ export const getViewScopedStates = ({
viewsState,
viewEditModeState,
viewObjectIdState,
viewObjectMetadataIdState,
viewTypeState,
entityCountInCurrentViewState,

View File

@ -8,7 +8,7 @@ export const mapColumnDefinitionsToViewFields = (
): ViewField[] => {
return columnDefinitions.map((columnDefinition) => ({
id: columnDefinition.viewFieldId || '',
fieldId: columnDefinition.fieldId,
fieldMetadataId: columnDefinition.fieldMetadataId,
position: columnDefinition.position,
size: columnDefinition.size,
isVisible: columnDefinition.isVisible ?? true,

View File

@ -11,12 +11,12 @@ export const mapViewFieldsToBoardFieldDefinitions = (
return viewFields
.map((viewField) => {
const correspondingFieldMetadata = fieldsMetadata.find(
({ fieldId }) => viewField.fieldId === fieldId,
({ fieldMetadataId }) => viewField.fieldMetadataId === fieldMetadataId,
);
return correspondingFieldMetadata
? {
fieldId: viewField.fieldId,
fieldMetadataId: viewField.fieldMetadataId,
label: correspondingFieldMetadata.label,
metadata: correspondingFieldMetadata.metadata,
entityChipDisplayMapper:
@ -27,7 +27,7 @@ export const mapViewFieldsToBoardFieldDefinitions = (
type: correspondingFieldMetadata.type,
position: viewField.position,
isVisible: viewField.isVisible,
viewFieldId: viewField.id,
viewFieldMetadataId: viewField.id,
}
: null;
})

View File

@ -11,12 +11,12 @@ export const mapViewFieldsToColumnDefinitions = (
return viewFields
.map((viewField) => {
const correspondingFieldMetadata = fieldsMetadata.find(
({ fieldId }) => viewField.fieldId === fieldId,
({ fieldMetadataId }) => viewField.fieldMetadataId === fieldMetadataId,
);
return correspondingFieldMetadata
? {
fieldId: viewField.fieldId,
fieldMetadataId: viewField.fieldMetadataId,
label: correspondingFieldMetadata.label,
metadata: correspondingFieldMetadata.metadata,
entityChipDisplayMapper:
@ -28,7 +28,7 @@ export const mapViewFieldsToColumnDefinitions = (
position: viewField.position,
size: viewField.size ?? correspondingFieldMetadata.size,
isVisible: viewField.isVisible,
viewFieldId: viewField.id,
viewFieldMetadataId: viewField.id,
}
: null;
})

View File

@ -7,7 +7,7 @@ export const mapViewFiltersToFilters = (
): Filter[] => {
return viewFilters.map((viewFilter) => {
return {
fieldId: viewFilter.fieldId,
fieldMetadataId: viewFilter.fieldMetadataId,
value: viewFilter.value,
displayValue: viewFilter.displayValue,
operand: viewFilter.operand,

View File

@ -5,7 +5,7 @@ import { ViewSort } from '../types/ViewSort';
export const mapViewSortsToSorts = (viewSorts: ViewSort[]): Sort[] => {
return viewSorts.map((viewSort) => {
return {
fieldId: viewSort.fieldId,
fieldMetadataId: viewSort.fieldMetadataId,
direction: viewSort.direction,
definition: viewSort.definition,
};