aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/hooks
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-07-26 11:27:56 -0300
committerSebastian <sebasjm@gmail.com>2021-07-26 11:33:49 -0300
commit44551245dab36570d937affdb89735c937b4ae55 (patch)
treefca0e201ce8157122af15abb9aebd1061a773b92 /packages/taler-wallet-webextension/src/hooks
parente70e664da982baf1b74e6210adaa870c298281d4 (diff)
downloadwallet-core-44551245dab36570d937affdb89735c937b4ae55.tar.xz
i18n
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks')
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useLang.ts7
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts21
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];
+}