@@ -21,6 +21,41 @@ import { getHostUrl, getOrigin } from '../utils/getHost';
2121import makeTheme , { getWindowSize } from '../utils/theme' ;
2222import getSettings from '../utils/settings' ;
2323
24+ const FAV_STORAGE_KEY = 'robosats.bookFilters.v1' ;
25+
26+ const defaultFav : Favorites = { type : null , currency : 0 , mode : 'fiat' , coordinator : 'robosats' } ;
27+
28+ const loadFavFromStorage = ( ) : Favorites => {
29+ try {
30+ const stored = window . localStorage . getItem ( FAV_STORAGE_KEY ) ;
31+ if ( stored ) {
32+ const parsed = JSON . parse ( stored ) ;
33+
34+ if (
35+ typeof parsed === 'object' &&
36+ parsed !== null &&
37+ ( parsed . type === null || typeof parsed . type === 'number' ) &&
38+ typeof parsed . currency === 'number' &&
39+ ( parsed . mode === 'fiat' || parsed . mode === 'swap' ) &&
40+ typeof parsed . coordinator === 'string'
41+ ) {
42+ return parsed as Favorites ;
43+ }
44+ }
45+ } catch {
46+ // localStorage unavailable or invalid data
47+ }
48+ return defaultFav ;
49+ } ;
50+
51+ const saveFavToStorage = ( fav : Favorites ) : void => {
52+ try {
53+ window . localStorage . setItem ( FAV_STORAGE_KEY , JSON . stringify ( fav ) ) ;
54+ } catch {
55+ // localStorage unavailable
56+ }
57+ } ;
58+
2459export type TorStatus = 'ON' | 'STARTING' | 'STOPPING' | 'OFF' ;
2560
2661export const closeAll : OpenDialogs = {
@@ -110,7 +145,7 @@ export const initialAppContext: UseAppStoreType = {
110145 clientVersion : getClientVersion ( ) ,
111146 setAcknowledgedWarning : ( ) => { } ,
112147 acknowledgedWarning : false ,
113- fav : { type : null , currency : 0 , mode : 'fiat' , coordinator : 'robosats' } ,
148+ fav : loadFavFromStorage ( ) ,
114149 setFav : ( ) => { } ,
115150 client : 'web' ,
116151 view : 'basic' ,
@@ -217,6 +252,11 @@ export const AppContextProvider = ({ children }: AppContextProviderProps): React
217252 setOpen ( closeAll ) ;
218253 } , [ page , setOpen ] ) ;
219254
255+ // Persist book filters to localStorage whenever they change
256+ useEffect ( ( ) => {
257+ saveFavToStorage ( fav ) ;
258+ } , [ fav ] ) ;
259+
220260 return (
221261 < AppContext . Provider
222262 value = { {
0 commit comments