diff options
author | Sebastian <sebasjm@gmail.com> | 2023-04-18 10:46:27 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-04-18 10:46:27 -0300 |
commit | b1a0d034fc1be0824e1eac46661604558264beee (patch) | |
tree | a3786aa0926e41cd43229bd93a4176646d0c59c1 /packages/web-util/src/hooks/useLocalStorage.ts | |
parent | 6833b2bd7513f9d1a98fa5d05be3011cae23a993 (diff) | |
download | wallet-core-b1a0d034fc1be0824e1eac46661604558264beee.tar.xz |
sync with chrome storage
Diffstat (limited to 'packages/web-util/src/hooks/useLocalStorage.ts')
-rw-r--r-- | packages/web-util/src/hooks/useLocalStorage.ts | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/packages/web-util/src/hooks/useLocalStorage.ts b/packages/web-util/src/hooks/useLocalStorage.ts index dd6c5def8..495c9b0f8 100644 --- a/packages/web-util/src/hooks/useLocalStorage.ts +++ b/packages/web-util/src/hooks/useLocalStorage.ts @@ -20,7 +20,12 @@ */ import { useEffect, useState } from "preact/hooks"; -import { localStorageMap, memoryMap } from "../utils/observable.js"; +import { + ObservableMap, + browserStorageMap, + localStorageMap, + memoryMap, +} from "../utils/observable.js"; export interface LocalStorageState { value?: string; @@ -29,8 +34,18 @@ export interface LocalStorageState { } const supportLocalStorage = typeof window !== "undefined"; +const supportBrowserStorage = + typeof chrome !== "undefined" && typeof chrome.storage !== "undefined"; -const storage = supportLocalStorage ? localStorageMap() : memoryMap<string>(); +const storage: ObservableMap<string, string> = (function buildStorage() { + if (supportBrowserStorage) { + return browserStorageMap(memoryMap<string>()); + } else if (supportLocalStorage) { + return localStorageMap(); + } else { + return memoryMap<string>(); + } +})(); export function useLocalStorage( key: string, |