@@ -72,14 +72,29 @@ const defaultStorage: StateStorage = {
7272 state : UserPreferencesState
7373 } = JSON . parse ( item )
7474
75- const remoteConfigStore = useRemoteConfigStore . getState ( )
76-
7775 const newState = {
7876 ...state ,
79- userSelectedTags : enhanceTags (
80- remoteConfigStore ,
81- state . userSelectedTags as unknown as string [ ]
82- ) ,
77+ }
78+ if ( version == 0 ) {
79+ const MAP_OLD_TAGS : Record < string , string > = {
80+ 'artificial-intelligence' : 'artificial intelligence' ,
81+ 'machine-learning' : 'machine learning' ,
82+ c : 'clang' ,
83+ cpp : 'c++' ,
84+ csharp : 'c#' ,
85+ 'data-science' : 'data science' ,
86+ go : 'golang' ,
87+ 'objective-c' : 'objectivec' ,
88+ }
89+
90+ const stateTags = state . userSelectedTags as unknown as string [ ]
91+ const newTags = stateTags . map ( ( tag ) => {
92+ if ( MAP_OLD_TAGS [ tag ] ) {
93+ return MAP_OLD_TAGS [ tag ]
94+ }
95+ return tag
96+ } )
97+ newState . userSelectedTags = enhanceTags ( useRemoteConfigStore . getState ( ) , newTags )
8398 }
8499
85100 return JSON . stringify ( { state : newState , version } )
@@ -89,21 +104,7 @@ const defaultStorage: StateStorage = {
89104 } ,
90105 setItem : ( name : string , value : string ) => {
91106 try {
92- let {
93- state,
94- version,
95- } : {
96- version : number
97- state : UserPreferencesState
98- } = JSON . parse ( value )
99-
100- const newState = {
101- ...state ,
102- userSelectedTags : state . userSelectedTags . map ( ( tag ) => tag . value ) ,
103- }
104-
105- const newValue = JSON . stringify ( { state : newState , version } )
106- window . localStorage . setItem ( name , newValue )
107+ window . localStorage . setItem ( name , value )
107108 } catch ( e ) {
108109 window . localStorage . setItem ( name , '' )
109110 }
@@ -142,15 +143,14 @@ export const useUserPreferences = create(
142143 userCustomCards : [ ] ,
143144 DNDDuration : 'never' ,
144145 advStatus : false ,
145- setLayout : ( layout ) => set ( { layout : layout } ) ,
146- setPromptEngine : ( promptEngine : string ) => set ( { promptEngine : promptEngine } ) ,
147- setListingMode : ( listingMode : ListingMode ) => set ( { listingMode : listingMode } ) ,
148- setTheme : ( theme : Theme ) => set ( { theme : theme } ) ,
149- setOpenLinksNewTab : ( openLinksNewTab : boolean ) => set ( { openLinksNewTab : openLinksNewTab } ) ,
146+ setLayout : ( layout ) => set ( { layout } ) ,
147+ setPromptEngine : ( promptEngine : string ) => set ( { promptEngine } ) ,
148+ setListingMode : ( listingMode : ListingMode ) => set ( { listingMode } ) ,
149+ setTheme : ( theme : Theme ) => set ( { theme } ) ,
150+ setOpenLinksNewTab : ( openLinksNewTab : boolean ) => set ( { openLinksNewTab } ) ,
150151 setCards : ( selectedCards : SelectedCard [ ] ) => set ( { cards : selectedCards } ) ,
151152 setTags : ( selectedTags : Tag [ ] ) => set ( { userSelectedTags : selectedTags } ) ,
152- setMaxVisibleCards : ( maxVisibleCards : number ) => set ( { maxVisibleCards : maxVisibleCards } ) ,
153-
153+ setMaxVisibleCards : ( maxVisibleCards : number ) => set ( { maxVisibleCards } ) ,
154154 setCardSettings : ( card : string , settings : CardSettingsType ) =>
155155 set ( ( state ) => ( {
156156 cardsSettings : {
@@ -218,7 +218,7 @@ export const useUserPreferences = create(
218218 set ( ( state ) => {
219219 const exists = state . userSelectedTags . find ( ( t ) => t . value === tag . value )
220220 if ( exists ) {
221- return state // No change if tag already followed
221+ return state
222222 }
223223 return {
224224 userSelectedTags : [ ...state . userSelectedTags , tag ] ,
@@ -233,7 +233,13 @@ export const useUserPreferences = create(
233233 } ) ,
234234 {
235235 name : 'preferences_storage' ,
236+ version : 1 ,
236237 storage : createJSONStorage ( ( ) => defaultStorage ) ,
238+ migrate : ( persistedState ) => {
239+ const state = persistedState as unknown as UserPreferencesState &
240+ UserPreferencesStoreActions
241+ return state
242+ } ,
237243 }
238244 )
239245)
0 commit comments