@@ -178,6 +178,33 @@ export const updateUserPreferences = async ({
178178 }
179179}
180180
181+ const migrateUserPreferences = async ( ) => {
182+ try {
183+ const userPreferences : UserPreferencesType = await JSON . parse (
184+ localStorage . getItem ( USER_PREFERENCES_ATTRIBUTE_KEY ) ,
185+ )
186+ if ( userPreferences && userPreferences . version !== 'v1' ) {
187+ const migratedPreferences : UserPreferencesType = {
188+ ...userPreferences ,
189+ resources : {
190+ ...userPreferences . resources ,
191+ [ ResourceKindType . devtronApplication ] : {
192+ [ UserPreferenceResourceActions . RECENTLY_VISITED ] : (
193+ userPreferences . resources ?. [ ResourceKindType . devtronApplication ] ?. [
194+ UserPreferenceResourceActions . RECENTLY_VISITED
195+ ] || [ ]
196+ ) . map ( ( { id, name } ) => ( { id : + id , name } ) ) ,
197+ } ,
198+ } ,
199+ version : 'v1' ,
200+ }
201+ localStorage . setItem ( USER_PREFERENCES_ATTRIBUTE_KEY , JSON . stringify ( migratedPreferences ) )
202+ }
203+ } catch {
204+ // do nothing
205+ }
206+ }
207+
181208/**
182209 * Optimized function to get updated user preferences with resource filtering
183210 * Can work with provided userPreferences or fetch from server/localStorage
@@ -191,6 +218,8 @@ const getUpdatedUserPreferences = async ({
191218} : UserPreferenceFilteredListTypes & {
192219 userPreferencesResponse ?: UserPreferencesType
193220} ) : Promise < UserPreferencesType > => {
221+ await migrateUserPreferences ( )
222+
194223 // Get base user preferences from multiple sources (priority: provided > localStorage > server)
195224 let baseUserPreferences : UserPreferencesType
196225
@@ -231,33 +260,6 @@ const getUpdatedUserPreferences = async ({
231260 }
232261}
233262
234- const migrateUserPreferences = async ( ) => {
235- try {
236- const userPreferences : UserPreferencesType = await JSON . parse (
237- localStorage . getItem ( USER_PREFERENCES_ATTRIBUTE_KEY ) ,
238- )
239- if ( userPreferences && userPreferences . version !== 'v1' ) {
240- const migratedPreferences : UserPreferencesType = {
241- ...userPreferences ,
242- resources : {
243- ...userPreferences . resources ,
244- [ ResourceKindType . devtronApplication ] : {
245- [ UserPreferenceResourceActions . RECENTLY_VISITED ] : (
246- userPreferences . resources ?. [ ResourceKindType . devtronApplication ] ?. [
247- UserPreferenceResourceActions . RECENTLY_VISITED
248- ] || [ ]
249- ) . map ( ( { id, name } ) => ( { id : + id , name } ) ) ,
250- } ,
251- } ,
252- version : userPreferences . version ?? 'v1' ,
253- }
254- localStorage . setItem ( USER_PREFERENCES_ATTRIBUTE_KEY , JSON . stringify ( migratedPreferences ) )
255- }
256- } catch {
257- // do nothing
258- }
259- }
260-
261263/**
262264 * Centralized function to update and persist user preferences
263265 * Handles both local state and server updates automatically
@@ -283,8 +285,6 @@ export const updateAndPersistUserPreferences = async ({
283285 resourceKind,
284286 } )
285287
286- await migrateUserPreferences ( )
287-
288288 // Update localStorage if requested
289289 if ( updateLocalStorage ) {
290290 localStorage . setItem ( USER_PREFERENCES_ATTRIBUTE_KEY , JSON . stringify ( updatedPreferences ) )
0 commit comments