From b1a0d034fc1be0824e1eac46661604558264beee Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 18 Apr 2023 10:46:27 -0300 Subject: sync with chrome storage --- packages/web-util/src/hooks/useLocalStorage.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'packages/web-util/src/hooks/useLocalStorage.ts') 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(); +const storage: ObservableMap = (function buildStorage() { + if (supportBrowserStorage) { + return browserStorageMap(memoryMap()); + } else if (supportLocalStorage) { + return localStorageMap(); + } else { + return memoryMap(); + } +})(); export function useLocalStorage( key: string, -- cgit v1.2.3