@@ -15,12 +15,18 @@ import { RELATION_TYPES } from '../../constants/RelationTypes';
15
15
import { LABEL_IDENTIFIER_FIELD_METADATA_TYPES } from '@/object-metadata/constants/LabelIdentifierFieldMetadataTypes' ;
16
16
import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem' ;
17
17
import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem' ;
18
+ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular' ;
18
19
import { getFieldSlug } from '@/object-metadata/utils/getFieldSlug' ;
19
20
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField' ;
21
+ import { useDeleteRecordFromCache } from '@/object-record/cache/hooks/useDeleteRecordFromCache' ;
22
+ import { usePrefetchedData } from '@/prefetch/hooks/usePrefetchedData' ;
23
+ import { PrefetchKey } from '@/prefetch/types/PrefetchKey' ;
20
24
import { SettingsObjectFieldActiveActionDropdown } from '@/settings/data-model/object-details/components/SettingsObjectFieldActiveActionDropdown' ;
21
25
import { SettingsObjectFieldInactiveActionDropdown } from '@/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown' ;
22
26
import { settingsObjectFieldsFamilyState } from '@/settings/data-model/object-details/states/settingsObjectFieldsFamilyState' ;
23
27
import { LightIconButton } from '@/ui/input/button/components/LightIconButton' ;
28
+ import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState' ;
29
+ import { View } from '@/views/types/View' ;
24
30
import { useNavigate } from 'react-router-dom' ;
25
31
import { useRecoilState } from 'recoil' ;
26
32
import { RelationMetadataType } from '~/generated-metadata/graphql' ;
@@ -61,6 +67,10 @@ export const SettingsObjectFieldItemTableRow = ({
61
67
62
68
const navigate = useNavigate ( ) ;
63
69
70
+ const [ navigationMemorizedUrl , setNavigationMemorizedUrl ] = useRecoilState (
71
+ navigationMemorizedUrlState ,
72
+ ) ;
73
+
64
74
const theme = useTheme ( ) ;
65
75
const { getIcon } = useIcons ( ) ;
66
76
const Icon = getIcon ( fieldMetadataItem . icon ) ;
@@ -100,8 +110,42 @@ export const SettingsObjectFieldItemTableRow = ({
100
110
deleteMetadataField,
101
111
} = useFieldMetadataItem ( ) ;
102
112
103
- const handleDisableField = ( activeFieldMetadatItem : FieldMetadataItem ) => {
104
- deactivateMetadataField ( activeFieldMetadatItem ) ;
113
+ const { records : allViews } = usePrefetchedData < View > ( PrefetchKey . AllViews ) ;
114
+
115
+ const deleteViewFromCache = useDeleteRecordFromCache ( {
116
+ objectNameSingular : CoreObjectNameSingular . View ,
117
+ } ) ;
118
+
119
+ const handleDisableField = async (
120
+ activeFieldMetadatItem : FieldMetadataItem ,
121
+ ) => {
122
+ await deactivateMetadataField ( activeFieldMetadatItem ) ;
123
+
124
+ const deletedViewIds = allViews
125
+ . map ( ( view ) => {
126
+ if ( view . kanbanFieldMetadataId === activeFieldMetadatItem . id ) {
127
+ deleteViewFromCache ( view ) ;
128
+ return view . id ;
129
+ }
130
+
131
+ return null ;
132
+ } )
133
+ . filter ( isDefined ) ;
134
+
135
+ const [ baseUrl , queryParams ] = navigationMemorizedUrl . includes ( '?' )
136
+ ? navigationMemorizedUrl . split ( '?' )
137
+ : [ navigationMemorizedUrl , '' ] ;
138
+
139
+ const params = new URLSearchParams ( queryParams ) ;
140
+ const currentViewId = params . get ( 'view' ) ;
141
+
142
+ if ( isDefined ( currentViewId ) && deletedViewIds . includes ( currentViewId ) ) {
143
+ params . delete ( 'view' ) ;
144
+ const updatedUrl = params . toString ( )
145
+ ? `${ baseUrl } ?${ params . toString ( ) } `
146
+ : baseUrl ;
147
+ setNavigationMemorizedUrl ( updatedUrl ) ;
148
+ }
105
149
} ;
106
150
107
151
const { updateOneObjectMetadataItem } = useUpdateOneObjectMetadataItem ( ) ;
0 commit comments