refactor: remove "core" naming from views and eliminate converter layer (#18667)
## Summary
- **Remove all "core" prefixes** from the views system — the
metadata-based storage migration is complete, so `CoreView`,
`coreViewsSelector`, `getCoreViews`, etc. are now just `View`,
`viewsSelector`, `getViews`
- **Eliminate the entire converter layer** (15 files, ~850 lines
deleted) — `convertCoreViewToView` and all sub-converters were either
no-ops or trivially adding `__typename` / mapping identical enum values.
Local enums now re-export from generated GraphQL types directly (single
source of truth)
- **Unify `View` and `ViewWithRelations`** into one type —
`ViewWithRelations` is now a type alias for `View`, selectors return
data directly without conversion
### Backend
- Rename `@ObjectType('CoreView')` → `@ObjectType('View')` (and all
sub-entities)
- Rename resolver methods: `getCoreViews` → `getViews`, `createCoreView`
→ `createView`, etc.
- Rename `FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION` →
`FIND_ALL_VIEWS_GRAPHQL_OPERATION`
### Frontend
- Delete 15 converter files (`convertGqlView*ToView*`,
`convertView*ToGql`, `convertViewWithRelationsToView`)
- Re-export `ViewType`, `ViewKey`, `ViewFilterGroupLogicalOperator` from
generated enums (no more duplicate enum definitions with different
casing)
- Replace `ViewOpenRecordInType` with `ViewOpenRecordIn` from generated
- Remove `__typename` from all local view sub-types
- Remove unused `variant` from `ViewFilter`, make `displayValue` and
`definition` optional
- Rename ~45 GraphQL query/mutation files and all selectors to drop
"core" prefix
- Delete unused `viewsWithRelationsSelector`
This commit is contained in:
+9
-9
@@ -14,7 +14,7 @@ import { selectedItemIdComponentState } from '@/ui/layout/selectable-list/states
|
||||
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
|
||||
import { useSetAtomComponentState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentState';
|
||||
import { useGetCurrentViewOnly } from '@/views/hooks/useGetCurrentViewOnly';
|
||||
import { coreViewsFromObjectMetadataItemFamilySelector } from '@/views/states/selectors/coreViewsFromObjectMetadataItemFamilySelector';
|
||||
import { viewsFromObjectMetadataItemFamilySelector } from '@/views/states/selectors/viewsFromObjectMetadataItemFamilySelector';
|
||||
import { ViewKey } from '@/views/types/ViewKey';
|
||||
import { ViewType, viewTypeIconMapping } from '@/views/types/ViewType';
|
||||
import { useDestroyViewFromCurrentState } from '@/views/view-picker/hooks/useDestroyViewFromCurrentState';
|
||||
@@ -51,7 +51,7 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
const customViewData = currentView
|
||||
? {
|
||||
...currentView,
|
||||
key: ViewKey.Custom,
|
||||
key: null,
|
||||
name: currentView.name || t`Custom View`,
|
||||
}
|
||||
: null;
|
||||
@@ -67,11 +67,11 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
: undefined;
|
||||
|
||||
const viewsOnCurrentObject = useAtomFamilySelectorValue(
|
||||
coreViewsFromObjectMetadataItemFamilySelector,
|
||||
viewsFromObjectMetadataItemFamilySelector,
|
||||
{ objectMetadataItemId: objectMetadataItem.id },
|
||||
);
|
||||
|
||||
const isDefaultView = currentView?.key === ViewKey.Index;
|
||||
const isDefaultView = currentView?.key === ViewKey.INDEX;
|
||||
const isLastView = viewsOnCurrentObject.length <= 1;
|
||||
|
||||
const recordIndexCalendarLayout = useAtomStateValue(
|
||||
@@ -106,10 +106,10 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
'Layout',
|
||||
'Visibility',
|
||||
'Fields',
|
||||
...(customViewData?.type === ViewType.Calendar
|
||||
...(customViewData?.type === ViewType.CALENDAR
|
||||
? ['CalendarDateField', 'CalendarView']
|
||||
: []),
|
||||
...(customViewData?.type !== ViewType.Calendar ? ['Group'] : []),
|
||||
...(customViewData?.type !== ViewType.CALENDAR ? ['Group'] : []),
|
||||
'Delete view',
|
||||
];
|
||||
|
||||
@@ -140,7 +140,7 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
focused={selectedItemId === 'Layout'}
|
||||
onClick={() => onContentChange('layout')}
|
||||
LeftIcon={viewTypeIconMapping(
|
||||
customViewData?.type ?? ViewType.Table,
|
||||
customViewData?.type ?? ViewType.TABLE,
|
||||
)}
|
||||
text={t`Layout`}
|
||||
contextualText={`${capitalize(customViewData?.type ?? '')}`}
|
||||
@@ -169,7 +169,7 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
</DropdownMenuItemsContainer>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItemsContainer scrollable={false}>
|
||||
{customViewData?.type === ViewType.Calendar && (
|
||||
{customViewData?.type === ViewType.CALENDAR && (
|
||||
<>
|
||||
<div id="calendar-date-field-picker-menu-item">
|
||||
<SelectableListItem
|
||||
@@ -227,7 +227,7 @@ export const ObjectOptionsDropdownCustomView = ({
|
||||
hasSubMenu
|
||||
/>
|
||||
</SelectableListItem>
|
||||
{customViewData?.type !== ViewType.Calendar && (
|
||||
{customViewData?.type !== ViewType.CALENDAR && (
|
||||
<div id="group-by-menu-item">
|
||||
<SelectableListItem
|
||||
itemId="Group"
|
||||
|
||||
+38
-36
@@ -17,7 +17,6 @@ import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/use
|
||||
import { useGetCurrentViewOnly } from '@/views/hooks/useGetCurrentViewOnly';
|
||||
import { useUpdateCurrentView } from '@/views/hooks/useUpdateCurrentView';
|
||||
import { type GraphQLView } from '@/views/types/GraphQLView';
|
||||
import { ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType';
|
||||
import { ViewType, viewTypeIconMapping } from '@/views/types/ViewType';
|
||||
import { useGetAvailableFieldsForCalendar } from '@/views/view-picker/hooks/useGetAvailableFieldsForCalendar';
|
||||
import { useGetAvailableFieldsToGroupRecordsBy } from '@/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy';
|
||||
@@ -37,7 +36,10 @@ import {
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { MenuItem, MenuItemSelect, MenuItemToggle } from 'twenty-ui/navigation';
|
||||
import { ViewCalendarLayout } from '~/generated-metadata/graphql';
|
||||
import {
|
||||
ViewCalendarLayout,
|
||||
ViewOpenRecordIn,
|
||||
} from '~/generated-metadata/graphql';
|
||||
|
||||
export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
const { t } = useLingui();
|
||||
@@ -92,8 +94,8 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
closeDropdown(dropdownId);
|
||||
return;
|
||||
}
|
||||
if (currentView?.type !== ViewType.Kanban) {
|
||||
await setAndPersistViewType(ViewType.Kanban);
|
||||
if (currentView?.type !== ViewType.KANBAN) {
|
||||
await setAndPersistViewType(ViewType.KANBAN);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -106,8 +108,8 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
closeDropdown(dropdownId);
|
||||
return;
|
||||
}
|
||||
if (currentView?.type !== ViewType.Calendar) {
|
||||
await setAndPersistViewType(ViewType.Calendar);
|
||||
if (currentView?.type !== ViewType.CALENDAR) {
|
||||
await setAndPersistViewType(ViewType.CALENDAR);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -115,15 +117,15 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
const nbsp = '\u00A0';
|
||||
|
||||
const selectableItemIdArray = [
|
||||
ViewType.Table,
|
||||
...(isDefaultView ? [] : [ViewType.Kanban]),
|
||||
...(!isDefaultView ? [ViewType.Calendar] : []),
|
||||
ViewOpenRecordInType.SIDE_PANEL,
|
||||
...(currentView?.type === ViewType.Kanban ? ['Group'] : []),
|
||||
...(currentView?.type === ViewType.Calendar
|
||||
ViewType.TABLE,
|
||||
...(isDefaultView ? [] : [ViewType.KANBAN]),
|
||||
...(!isDefaultView ? [ViewType.CALENDAR] : []),
|
||||
ViewOpenRecordIn.SIDE_PANEL,
|
||||
...(currentView?.type === ViewType.KANBAN ? ['Group'] : []),
|
||||
...(currentView?.type === ViewType.CALENDAR
|
||||
? ['CalendarView', 'CalendarDateField']
|
||||
: []),
|
||||
...(currentView?.type !== ViewType.Table ? ['Compact view'] : []),
|
||||
...(currentView?.type !== ViewType.TABLE ? ['Compact view'] : []),
|
||||
];
|
||||
|
||||
const selectedItemId = useAtomComponentStateValue(
|
||||
@@ -152,48 +154,48 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
>
|
||||
<DropdownMenuItemsContainer scrollable={false}>
|
||||
<SelectableListItem
|
||||
itemId={ViewType.Table}
|
||||
itemId={ViewType.TABLE}
|
||||
onEnter={() => {
|
||||
setAndPersistViewType(ViewType.Table);
|
||||
setAndPersistViewType(ViewType.TABLE);
|
||||
}}
|
||||
>
|
||||
<MenuItemSelect
|
||||
LeftIcon={IconTable}
|
||||
text={t`Table`}
|
||||
selected={currentView?.type === ViewType.Table}
|
||||
focused={selectedItemId === ViewType.Table}
|
||||
selected={currentView?.type === ViewType.TABLE}
|
||||
focused={selectedItemId === ViewType.TABLE}
|
||||
onClick={async () => {
|
||||
if (currentView?.type !== ViewType.Table) {
|
||||
await setAndPersistViewType(ViewType.Table);
|
||||
if (currentView?.type !== ViewType.TABLE) {
|
||||
await setAndPersistViewType(ViewType.TABLE);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</SelectableListItem>
|
||||
<SelectableListItem
|
||||
itemId={ViewType.Calendar}
|
||||
itemId={ViewType.CALENDAR}
|
||||
onEnter={() => {
|
||||
setAndPersistViewType(ViewType.Calendar);
|
||||
setAndPersistViewType(ViewType.CALENDAR);
|
||||
}}
|
||||
>
|
||||
<MenuItemSelect
|
||||
LeftIcon={viewTypeIconMapping(ViewType.Calendar)}
|
||||
LeftIcon={viewTypeIconMapping(ViewType.CALENDAR)}
|
||||
text={t`Calendar`}
|
||||
selected={currentView?.type === ViewType.Calendar}
|
||||
focused={selectedItemId === ViewType.Calendar}
|
||||
selected={currentView?.type === ViewType.CALENDAR}
|
||||
focused={selectedItemId === ViewType.CALENDAR}
|
||||
onClick={handleSelectCalendarViewType}
|
||||
/>
|
||||
</SelectableListItem>
|
||||
<SelectableListItem
|
||||
itemId={ViewType.Kanban}
|
||||
itemId={ViewType.KANBAN}
|
||||
onEnter={() => {
|
||||
setAndPersistViewType(ViewType.Kanban);
|
||||
setAndPersistViewType(ViewType.KANBAN);
|
||||
}}
|
||||
>
|
||||
<MenuItemSelect
|
||||
LeftIcon={viewTypeIconMapping(ViewType.Kanban)}
|
||||
LeftIcon={viewTypeIconMapping(ViewType.KANBAN)}
|
||||
text={t`Kanban`}
|
||||
disabled={isDefaultView}
|
||||
focused={selectedItemId === ViewType.Kanban}
|
||||
focused={selectedItemId === ViewType.KANBAN}
|
||||
contextualText={
|
||||
isDefaultView ? (
|
||||
<>
|
||||
@@ -207,14 +209,14 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
) : undefined
|
||||
}
|
||||
contextualTextPosition="right"
|
||||
selected={currentView?.type === ViewType.Kanban}
|
||||
selected={currentView?.type === ViewType.KANBAN}
|
||||
onClick={handleSelectKanbanViewType}
|
||||
/>
|
||||
</SelectableListItem>
|
||||
</DropdownMenuItemsContainer>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItemsContainer scrollable={false}>
|
||||
{currentView?.type === ViewType.Calendar && (
|
||||
{currentView?.type === ViewType.CALENDAR && (
|
||||
<>
|
||||
<SelectableListItem
|
||||
itemId="CalendarDateField"
|
||||
@@ -253,15 +255,15 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
</>
|
||||
)}
|
||||
<SelectableListItem
|
||||
itemId={ViewOpenRecordInType.SIDE_PANEL}
|
||||
itemId={ViewOpenRecordIn.SIDE_PANEL}
|
||||
onEnter={() => {
|
||||
onContentChange('layoutOpenIn');
|
||||
}}
|
||||
>
|
||||
<MenuItem
|
||||
focused={selectedItemId === ViewOpenRecordInType.SIDE_PANEL}
|
||||
focused={selectedItemId === ViewOpenRecordIn.SIDE_PANEL}
|
||||
LeftIcon={
|
||||
recordIndexOpenRecordIn === ViewOpenRecordInType.SIDE_PANEL
|
||||
recordIndexOpenRecordIn === ViewOpenRecordIn.SIDE_PANEL
|
||||
? IconLayoutSidebarRight
|
||||
: IconLayoutNavbar
|
||||
}
|
||||
@@ -270,7 +272,7 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
onContentChange('layoutOpenIn');
|
||||
}}
|
||||
contextualText={
|
||||
recordIndexOpenRecordIn === ViewOpenRecordInType.SIDE_PANEL
|
||||
recordIndexOpenRecordIn === ViewOpenRecordIn.SIDE_PANEL
|
||||
? t`Side Panel`
|
||||
: t`Record Page`
|
||||
}
|
||||
@@ -278,7 +280,7 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
hasSubMenu
|
||||
/>
|
||||
</SelectableListItem>
|
||||
{currentView?.type === ViewType.Kanban && (
|
||||
{currentView?.type === ViewType.KANBAN && (
|
||||
<SelectableListItem
|
||||
itemId="Group"
|
||||
onEnter={() => {
|
||||
@@ -302,7 +304,7 @@ export const ObjectOptionsDropdownLayoutContent = () => {
|
||||
/>
|
||||
</SelectableListItem>
|
||||
)}
|
||||
{currentView?.type !== ViewType.Table && (
|
||||
{currentView?.type !== ViewType.TABLE && (
|
||||
<SelectableListItem
|
||||
itemId="Compact view"
|
||||
onEnter={() => {
|
||||
|
||||
+13
-15
@@ -14,7 +14,7 @@ import { selectedItemIdComponentState } from '@/ui/layout/selectable-list/states
|
||||
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
|
||||
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
||||
import { useGetCurrentViewOnly } from '@/views/hooks/useGetCurrentViewOnly';
|
||||
import { ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType';
|
||||
import { ViewOpenRecordIn } from '~/generated-metadata/graphql';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import {
|
||||
IconChevronLeft,
|
||||
@@ -41,8 +41,8 @@ export const ObjectOptionsDropdownLayoutOpenInContent = () => {
|
||||
);
|
||||
|
||||
const selectableItemIdArray = [
|
||||
ViewOpenRecordInType.SIDE_PANEL,
|
||||
ViewOpenRecordInType.RECORD_PAGE,
|
||||
ViewOpenRecordIn.SIDE_PANEL,
|
||||
ViewOpenRecordIn.RECORD_PAGE,
|
||||
];
|
||||
|
||||
return (
|
||||
@@ -64,13 +64,13 @@ export const ObjectOptionsDropdownLayoutOpenInContent = () => {
|
||||
selectableItemIdArray={selectableItemIdArray}
|
||||
>
|
||||
<SelectableListItem
|
||||
itemId={ViewOpenRecordInType.SIDE_PANEL}
|
||||
itemId={ViewOpenRecordIn.SIDE_PANEL}
|
||||
onEnter={() => {
|
||||
if (!canOpenInSidePanel) {
|
||||
return;
|
||||
}
|
||||
setAndPersistOpenRecordIn(
|
||||
ViewOpenRecordInType.SIDE_PANEL,
|
||||
ViewOpenRecordIn.SIDE_PANEL,
|
||||
currentView,
|
||||
);
|
||||
}}
|
||||
@@ -78,17 +78,15 @@ export const ObjectOptionsDropdownLayoutOpenInContent = () => {
|
||||
<MenuItemSelect
|
||||
LeftIcon={IconLayoutSidebarRight}
|
||||
text={t`Side Panel`}
|
||||
selected={
|
||||
recordIndexOpenRecordIn === ViewOpenRecordInType.SIDE_PANEL
|
||||
}
|
||||
focused={selectedItemId === ViewOpenRecordInType.SIDE_PANEL}
|
||||
selected={recordIndexOpenRecordIn === ViewOpenRecordIn.SIDE_PANEL}
|
||||
focused={selectedItemId === ViewOpenRecordIn.SIDE_PANEL}
|
||||
onClick={() => {
|
||||
if (!canOpenInSidePanel) {
|
||||
return;
|
||||
}
|
||||
|
||||
setAndPersistOpenRecordIn(
|
||||
ViewOpenRecordInType.SIDE_PANEL,
|
||||
ViewOpenRecordIn.SIDE_PANEL,
|
||||
currentView,
|
||||
);
|
||||
}}
|
||||
@@ -96,10 +94,10 @@ export const ObjectOptionsDropdownLayoutOpenInContent = () => {
|
||||
/>
|
||||
</SelectableListItem>
|
||||
<SelectableListItem
|
||||
itemId={ViewOpenRecordInType.RECORD_PAGE}
|
||||
itemId={ViewOpenRecordIn.RECORD_PAGE}
|
||||
onEnter={() =>
|
||||
setAndPersistOpenRecordIn(
|
||||
ViewOpenRecordInType.RECORD_PAGE,
|
||||
ViewOpenRecordIn.RECORD_PAGE,
|
||||
currentView,
|
||||
)
|
||||
}
|
||||
@@ -108,15 +106,15 @@ export const ObjectOptionsDropdownLayoutOpenInContent = () => {
|
||||
LeftIcon={IconLayoutNavbar}
|
||||
text={t`Record Page`}
|
||||
selected={
|
||||
recordIndexOpenRecordIn === ViewOpenRecordInType.RECORD_PAGE
|
||||
recordIndexOpenRecordIn === ViewOpenRecordIn.RECORD_PAGE
|
||||
}
|
||||
onClick={() =>
|
||||
setAndPersistOpenRecordIn(
|
||||
ViewOpenRecordInType.RECORD_PAGE,
|
||||
ViewOpenRecordIn.RECORD_PAGE,
|
||||
currentView,
|
||||
)
|
||||
}
|
||||
focused={selectedItemId === ViewOpenRecordInType.RECORD_PAGE}
|
||||
focused={selectedItemId === ViewOpenRecordIn.RECORD_PAGE}
|
||||
/>
|
||||
</SelectableListItem>
|
||||
</SelectableList>
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import { ViewKey } from '@/views/types/ViewKey';
|
||||
export const ObjectOptionsDropdownMenuContent = () => {
|
||||
const { currentView } = useGetCurrentViewOnly();
|
||||
|
||||
const isDefaultView = currentView?.key === ViewKey.Index;
|
||||
const isDefaultView = currentView?.key === ViewKey.INDEX;
|
||||
|
||||
if (isDefaultView) {
|
||||
return <ObjectOptionsDropdownDefaultView />;
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@ export const ObjectOptionsDropdownRecordGroupFieldsContent = () => {
|
||||
/>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItemsContainer>
|
||||
{viewType === ViewType.Table && (
|
||||
{viewType === ViewType.TABLE && (
|
||||
<MenuItemSelect
|
||||
text={t`None`}
|
||||
selected={!isDefined(recordIndexGroupFieldMetadataItem)}
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ const createStory = (contentId: ObjectOptionsContentId | null): Story => ({
|
||||
>
|
||||
<ObjectOptionsDropdownContext.Provider
|
||||
value={{
|
||||
viewType: ViewType.Table,
|
||||
viewType: ViewType.TABLE,
|
||||
objectMetadataItem: companyObjectMetadataItem,
|
||||
recordIndexId: instanceId,
|
||||
currentContentId: contentId,
|
||||
|
||||
+15
-18
@@ -5,10 +5,9 @@ import { useRecordIndexContextOrThrow } from '@/object-record/record-index/conte
|
||||
import { useLoadRecordIndexStates } from '@/object-record/record-index/hooks/useLoadRecordIndexStates';
|
||||
import { recordIndexViewTypeState } from '@/object-record/record-index/states/recordIndexViewTypeState';
|
||||
import { useUpdateCurrentView } from '@/views/hooks/useUpdateCurrentView';
|
||||
import { coreViewsSelector } from '@/views/states/selectors/coreViewsSelector';
|
||||
import { viewsSelector } from '@/views/states/selectors/viewsSelector';
|
||||
import { type GraphQLView } from '@/views/types/GraphQLView';
|
||||
import { ViewType, viewTypeIconMapping } from '@/views/types/ViewType';
|
||||
import { convertCoreViewToView } from '@/views/utils/convertCoreViewToView';
|
||||
import { useGetAvailableFieldsForCalendar } from '@/views/view-picker/hooks/useGetAvailableFieldsForCalendar';
|
||||
import { useGetAvailableFieldsToGroupRecordsBy } from '@/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy';
|
||||
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
|
||||
@@ -38,27 +37,25 @@ export const useSetViewTypeFromLayoutOptionsMenu = () => {
|
||||
}),
|
||||
);
|
||||
|
||||
const existingCoreViews = store.get(coreViewsSelector.atom);
|
||||
const existingViews = store.get(viewsSelector.atom);
|
||||
|
||||
if (!isDefined(currentViewId)) {
|
||||
throw new Error('No view id found');
|
||||
}
|
||||
|
||||
const currentCoreView = existingCoreViews.find(
|
||||
(coreView) => coreView.id === currentViewId,
|
||||
const currentView = existingViews.find(
|
||||
(view) => view.id === currentViewId,
|
||||
);
|
||||
|
||||
if (!isDefined(currentCoreView)) {
|
||||
if (!isDefined(currentView)) {
|
||||
throw new Error('No current view found');
|
||||
}
|
||||
|
||||
const currentView = convertCoreViewToView(currentCoreView);
|
||||
|
||||
const updateCurrentViewParams: Partial<GraphQLView> = {};
|
||||
updateCurrentViewParams.type = viewType;
|
||||
|
||||
switch (viewType) {
|
||||
case ViewType.Kanban: {
|
||||
case ViewType.KANBAN: {
|
||||
if (availableFieldsForGrouping.length === 0) {
|
||||
throw new Error('No fields for kanban - should not happen');
|
||||
}
|
||||
@@ -76,7 +73,7 @@ export const useSetViewTypeFromLayoutOptionsMenu = () => {
|
||||
await updateCurrentView(updateCurrentViewParams);
|
||||
return;
|
||||
}
|
||||
case ViewType.Table: {
|
||||
case ViewType.TABLE: {
|
||||
if (shouldChangeIcon(currentView.icon, currentView.type)) {
|
||||
updateCurrentViewParams.icon =
|
||||
viewTypeIconMapping(viewType).displayName;
|
||||
@@ -86,7 +83,7 @@ export const useSetViewTypeFromLayoutOptionsMenu = () => {
|
||||
setRecordIndexViewType(viewType);
|
||||
return;
|
||||
}
|
||||
case ViewType.Calendar: {
|
||||
case ViewType.CALENDAR: {
|
||||
if (availableFieldsForCalendar.length === 0) {
|
||||
throw new Error('No date fields for calendar');
|
||||
}
|
||||
@@ -115,7 +112,7 @@ export const useSetViewTypeFromLayoutOptionsMenu = () => {
|
||||
updateCurrentViewParams.mainGroupByFieldMetadataId = null;
|
||||
return await updateCurrentView(updateCurrentViewParams);
|
||||
}
|
||||
case ViewType.FieldsWidget: {
|
||||
case ViewType.FIELDS_WIDGET: {
|
||||
return;
|
||||
}
|
||||
default: {
|
||||
@@ -139,20 +136,20 @@ export const useSetViewTypeFromLayoutOptionsMenu = () => {
|
||||
oldViewType: ViewType,
|
||||
): boolean => {
|
||||
if (
|
||||
oldViewType === ViewType.Kanban &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.Kanban).displayName
|
||||
oldViewType === ViewType.KANBAN &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.KANBAN).displayName
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
oldViewType === ViewType.Table &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.Table).displayName
|
||||
oldViewType === ViewType.TABLE &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.TABLE).displayName
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
oldViewType === ViewType.Calendar &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.Calendar).displayName
|
||||
oldViewType === ViewType.CALENDAR &&
|
||||
oldIcon === viewTypeIconMapping(ViewType.CALENDAR).displayName
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomStat
|
||||
import { useStore } from 'jotai';
|
||||
import { useUpdateCurrentView } from '@/views/hooks/useUpdateCurrentView';
|
||||
import { type GraphQLView } from '@/views/types/GraphQLView';
|
||||
import { type ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType';
|
||||
import { type ViewOpenRecordIn } from '~/generated-metadata/graphql';
|
||||
import { viewPickerInputNameComponentState } from '@/views/view-picker/states/viewPickerInputNameComponentState';
|
||||
import { viewPickerSelectedIconComponentState } from '@/views/view-picker/states/viewPickerSelectedIconComponentState';
|
||||
import { useCallback } from 'react';
|
||||
@@ -27,7 +27,7 @@ export const useUpdateObjectViewOptions = () => {
|
||||
const { updateCurrentView } = useUpdateCurrentView();
|
||||
|
||||
const setAndPersistOpenRecordIn = useCallback(
|
||||
(openRecordIn: ViewOpenRecordInType, view: GraphQLView | undefined) => {
|
||||
(openRecordIn: ViewOpenRecordIn, view: GraphQLView | undefined) => {
|
||||
if (!view) return;
|
||||
setRecordIndexOpenRecordIn(openRecordIn);
|
||||
store.set(recordIndexOpenRecordInState.atom, openRecordIn);
|
||||
|
||||
Reference in New Issue
Block a user