@@ -6,22 +6,33 @@ import { TimeFormatOption } from "@/widgets/alerts-table/lib/alert-table-time-fo
6
6
import { ListFormatOption } from "@/widgets/alerts-table/lib/alert-table-list-format" ;
7
7
import { ColumnRenameMapping } from "@/widgets/alerts-table/ui/alert-table-column-rename" ;
8
8
import { DEFAULT_COLS , DEFAULT_COLS_VISIBILITY } from "@/widgets/alerts-table/lib/alert-table-utils" ;
9
- import { usePresets } from "./usePresets" ;
10
9
11
10
interface UsePresetColumnStateOptions {
12
11
presetName : string ;
13
12
presetId ?: string ;
14
13
useBackend ?: boolean ; // Flag to enable backend usage
15
14
}
16
15
16
+ // Static preset IDs that should always use local storage
17
+ const STATIC_PRESET_IDS = [
18
+ "11111111-1111-1111-1111-111111111111" , // FEED_PRESET_ID
19
+ "11111111-1111-1111-1111-111111111113" , // DISMISSED_PRESET_ID
20
+ "11111111-1111-1111-1111-111111111114" , // GROUPS_PRESET_ID
21
+ "11111111-1111-1111-1111-111111111115" , // WITHOUT_INCIDENT_PRESET_ID
22
+ ] ;
23
+
17
24
export const usePresetColumnState = ( {
18
25
presetName,
19
26
presetId,
20
27
useBackend = false ,
21
28
} : UsePresetColumnStateOptions ) => {
29
+ // Check if this is a static preset that should always use local storage
30
+ const isStaticPreset = ! presetId || STATIC_PRESET_IDS . includes ( presetId ) ;
31
+ const shouldUseBackend = useBackend && ! isStaticPreset ;
32
+
22
33
// Backend-based state
23
34
const { columnConfig, updateColumnConfig, isLoading } = usePresetColumnConfig ( {
24
- presetId : useBackend ? presetId : undefined
35
+ presetId : shouldUseBackend ? presetId : undefined
25
36
} ) ;
26
37
27
38
// Local storage fallbacks (existing implementation)
@@ -52,94 +63,99 @@ export const usePresetColumnState = ({
52
63
53
64
// Determine which state to use
54
65
const columnVisibility = useMemo ( ( ) => {
55
- if ( useBackend && columnConfig . column_visibility && Object . keys ( columnConfig . column_visibility ) . length > 0 ) {
66
+ if ( shouldUseBackend && columnConfig . column_visibility && Object . keys ( columnConfig . column_visibility ) . length > 0 ) {
56
67
return columnConfig . column_visibility ;
57
68
}
58
69
return localColumnVisibility ;
59
- } , [ useBackend , columnConfig . column_visibility , localColumnVisibility ] ) ;
70
+ } , [ shouldUseBackend , columnConfig . column_visibility , localColumnVisibility ] ) ;
60
71
61
72
const columnOrder = useMemo ( ( ) => {
62
- if ( useBackend && columnConfig . column_order && columnConfig . column_order . length > 0 ) {
73
+ if ( shouldUseBackend && columnConfig . column_order && columnConfig . column_order . length > 0 ) {
63
74
return columnConfig . column_order ;
64
75
}
65
76
return localColumnOrder ;
66
- } , [ useBackend , columnConfig . column_order , localColumnOrder ] ) ;
77
+ } , [ shouldUseBackend , columnConfig . column_order , localColumnOrder ] ) ;
67
78
68
79
const columnRenameMapping = useMemo ( ( ) => {
69
- if ( useBackend && columnConfig . column_rename_mapping ) {
80
+ if ( shouldUseBackend && columnConfig . column_rename_mapping ) {
70
81
return columnConfig . column_rename_mapping ;
71
82
}
72
83
return localColumnRenameMapping ;
73
- } , [ useBackend , columnConfig . column_rename_mapping , localColumnRenameMapping ] ) ;
84
+ } , [ shouldUseBackend , columnConfig . column_rename_mapping , localColumnRenameMapping ] ) ;
74
85
75
86
const columnTimeFormats = useMemo ( ( ) => {
76
- if ( useBackend && columnConfig . column_time_formats ) {
87
+ if ( shouldUseBackend && columnConfig . column_time_formats ) {
77
88
return columnConfig . column_time_formats as Record < string , TimeFormatOption > ;
78
89
}
79
90
return localColumnTimeFormats ;
80
- } , [ useBackend , columnConfig . column_time_formats , localColumnTimeFormats ] ) ;
91
+ } , [ shouldUseBackend , columnConfig . column_time_formats , localColumnTimeFormats ] ) ;
81
92
82
93
const columnListFormats = useMemo ( ( ) => {
83
- if ( useBackend && columnConfig . column_list_formats ) {
94
+ if ( shouldUseBackend && columnConfig . column_list_formats ) {
84
95
return columnConfig . column_list_formats as Record < string , ListFormatOption > ;
85
96
}
86
97
return localColumnListFormats ;
87
- } , [ useBackend , columnConfig . column_list_formats , localColumnListFormats ] ) ;
98
+ } , [ shouldUseBackend , columnConfig . column_list_formats , localColumnListFormats ] ) ;
88
99
89
- // Update functions
100
+ // Update functions - keep them synchronous for local storage, async only for backend
90
101
const setColumnVisibility = useCallback (
91
- async ( visibility : VisibilityState ) => {
92
- if ( useBackend ) {
93
- await updateColumnConfig ( { column_visibility : visibility } ) ;
102
+ ( visibility : VisibilityState ) => {
103
+ if ( shouldUseBackend ) {
104
+ return updateColumnConfig ( { column_visibility : visibility } ) ;
94
105
} else {
95
106
setLocalColumnVisibility ( visibility ) ;
107
+ return Promise . resolve ( ) ; // Return resolved promise for consistency
96
108
}
97
109
} ,
98
- [ useBackend , updateColumnConfig , setLocalColumnVisibility ]
110
+ [ shouldUseBackend , updateColumnConfig , setLocalColumnVisibility ]
99
111
) ;
100
112
101
113
const setColumnOrder = useCallback (
102
- async ( order : ColumnOrderState ) => {
103
- if ( useBackend ) {
104
- await updateColumnConfig ( { column_order : order } ) ;
114
+ ( order : ColumnOrderState ) => {
115
+ if ( shouldUseBackend ) {
116
+ return updateColumnConfig ( { column_order : order } ) ;
105
117
} else {
106
118
setLocalColumnOrder ( order ) ;
119
+ return Promise . resolve ( ) ; // Return resolved promise for consistency
107
120
}
108
121
} ,
109
- [ useBackend , updateColumnConfig , setLocalColumnOrder ]
122
+ [ shouldUseBackend , updateColumnConfig , setLocalColumnOrder ]
110
123
) ;
111
124
112
125
const setColumnRenameMapping = useCallback (
113
- async ( mapping : ColumnRenameMapping ) => {
114
- if ( useBackend ) {
115
- await updateColumnConfig ( { column_rename_mapping : mapping } ) ;
126
+ ( mapping : ColumnRenameMapping ) => {
127
+ if ( shouldUseBackend ) {
128
+ return updateColumnConfig ( { column_rename_mapping : mapping } ) ;
116
129
} else {
117
130
setLocalColumnRenameMapping ( mapping ) ;
131
+ return Promise . resolve ( ) ; // Return resolved promise for consistency
118
132
}
119
133
} ,
120
- [ useBackend , updateColumnConfig , setLocalColumnRenameMapping ]
134
+ [ shouldUseBackend , updateColumnConfig , setLocalColumnRenameMapping ]
121
135
) ;
122
136
123
137
const setColumnTimeFormats = useCallback (
124
- async ( formats : Record < string , TimeFormatOption > ) => {
125
- if ( useBackend ) {
126
- await updateColumnConfig ( { column_time_formats : formats } ) ;
138
+ ( formats : Record < string , TimeFormatOption > ) => {
139
+ if ( shouldUseBackend ) {
140
+ return updateColumnConfig ( { column_time_formats : formats } ) ;
127
141
} else {
128
142
setLocalColumnTimeFormats ( formats ) ;
143
+ return Promise . resolve ( ) ; // Return resolved promise for consistency
129
144
}
130
145
} ,
131
- [ useBackend , updateColumnConfig , setLocalColumnTimeFormats ]
146
+ [ shouldUseBackend , updateColumnConfig , setLocalColumnTimeFormats ]
132
147
) ;
133
148
134
149
const setColumnListFormats = useCallback (
135
- async ( formats : Record < string , ListFormatOption > ) => {
136
- if ( useBackend ) {
137
- await updateColumnConfig ( { column_list_formats : formats } ) ;
150
+ ( formats : Record < string , ListFormatOption > ) => {
151
+ if ( shouldUseBackend ) {
152
+ return updateColumnConfig ( { column_list_formats : formats } ) ;
138
153
} else {
139
154
setLocalColumnListFormats ( formats ) ;
155
+ return Promise . resolve ( ) ; // Return resolved promise for consistency
140
156
}
141
157
} ,
142
- [ useBackend , updateColumnConfig , setLocalColumnListFormats ]
158
+ [ shouldUseBackend , updateColumnConfig , setLocalColumnListFormats ]
143
159
) ;
144
160
145
161
return {
@@ -154,7 +170,7 @@ export const usePresetColumnState = ({
154
170
setColumnTimeFormats,
155
171
setColumnListFormats,
156
172
isLoading,
157
- useBackend,
173
+ useBackend : shouldUseBackend ,
158
174
} ;
159
175
} ;
160
176
0 commit comments