diff options
| author | Sebastian <sebasjm@gmail.com> | 2021-07-26 11:27:56 -0300 | 
|---|---|---|
| committer | Sebastian <sebasjm@gmail.com> | 2021-07-26 11:33:49 -0300 | 
| commit | 44551245dab36570d937affdb89735c937b4ae55 (patch) | |
| tree | fca0e201ce8157122af15abb9aebd1061a773b92 /packages/taler-wallet-webextension/src/hooks | |
| parent | e70e664da982baf1b74e6210adaa870c298281d4 (diff) | |
i18n
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks')
| -rw-r--r-- | packages/taler-wallet-webextension/src/hooks/useLang.ts | 7 | ||||
| -rw-r--r-- | packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts | 21 | 
2 files changed, 28 insertions, 0 deletions
| diff --git a/packages/taler-wallet-webextension/src/hooks/useLang.ts b/packages/taler-wallet-webextension/src/hooks/useLang.ts new file mode 100644 index 000000000..d9ad7cd55 --- /dev/null +++ b/packages/taler-wallet-webextension/src/hooks/useLang.ts @@ -0,0 +1,7 @@ +import { useNotNullLocalStorage } from './useLocalStorage'; + +export function useLang(initial?: string): [string, (s:string) => void] { +  const browserLang: string | undefined = typeof window !== "undefined" ? navigator.language || (navigator as any).userLanguage : undefined; +  const defaultLang = (browserLang || initial || 'en').substring(0, 2) +  return useNotNullLocalStorage('lang-preference', defaultLang) +} diff --git a/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts b/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts index 30f681940..78a8b65d5 100644 --- a/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts +++ b/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts @@ -42,3 +42,24 @@ export function useLocalStorage(key: string, initialValue?: string): [string | u    return [storedValue, setValue];  } + +//TODO: merge with the above function +export function useNotNullLocalStorage(key: string, initialValue: string): [string, StateUpdater<string>] { +  const [storedValue, setStoredValue] = useState<string>((): string => { +    return typeof window !== "undefined" ? window.localStorage.getItem(key) || initialValue : initialValue; +  }); + +  const setValue = (value: string | ((val: string) => string)) => { +    const valueToStore = value instanceof Function ? value(storedValue) : value; +    setStoredValue(valueToStore); +    if (typeof window !== "undefined") { +      if (!valueToStore) { +        window.localStorage.removeItem(key) +      } else { +        window.localStorage.setItem(key, valueToStore); +      } +    } +  }; + +  return [storedValue, setValue]; +} | 
