@@ -4,11 +4,24 @@ interface StorageData {
44 [ key : string ] : string ;
55}
66
7+ function isStorageAvailable ( storage : Storage ) : boolean {
8+ try {
9+ const test = '__storage_test__' ;
10+ storage . setItem ( test , test ) ;
11+ storage . removeItem ( test ) ;
12+ return true ;
13+ } catch ( _ ) {
14+ return false ;
15+ }
16+ }
17+
718function getAvailableStorage ( ) : Storage {
8- if ( typeof window . localStorage !== 'undefined' && window . localStorage !== null ) return window . localStorage ;
19+ if ( isStorageAvailable ( window . localStorage ) ) return window . localStorage ;
920
10- // Fallback to sessionStorage
11- if ( typeof window . sessionStorage !== 'undefined' && window . sessionStorage !== null ) return window . sessionStorage ;
21+ if ( isStorageAvailable ( window . sessionStorage ) ) {
22+ console . error ( 'localStorage not available, falling back to sessionStorage' ) ;
23+ return window . sessionStorage ;
24+ }
1225
1326 throw new Error ( 'Neither localStorage nor sessionStorage is available' ) ;
1427}
@@ -22,18 +35,14 @@ function getStorageObject(): StorageData {
2235
2336 return JSON . parse ( stringifiedData ) ;
2437 } catch ( error ) {
25- throw new Error ( `Failed to retrieve ${ STORE_KEY } data from storage` ) ;
38+ console . error ( `Failed to load or parse data from storage key "${ STORE_KEY } ":` , error ) ;
39+ return { } ;
2640 }
2741}
2842
2943function saveStorageObject ( data : StorageData ) : void {
3044 const storage = getAvailableStorage ( ) ;
31-
32- try {
33- storage . setItem ( STORE_KEY , JSON . stringify ( data ) ) ;
34- } catch ( error ) {
35- throw new Error ( 'Failed to save data to storage' ) ;
36- }
45+ storage . setItem ( STORE_KEY , JSON . stringify ( data ) ) ;
3746}
3847
3948export function get ( key : string ) : string | undefined {
0 commit comments