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) | |
download | wallet-core-44551245dab36570d937affdb89735c937b4ae55.tar.xz |
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]; +} |