[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant-backoffice] 02/04: update html lang after updating lang
From: |
gnunet |
Subject: |
[taler-merchant-backoffice] 02/04: update html lang after updating lang |
Date: |
Wed, 19 Oct 2022 08:03:39 +0200 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository merchant-backoffice.
commit bddf351e39581446a0bf3a0eb5a7f510550bdfe9
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Oct 19 02:29:46 2022 -0300
update html lang after updating lang
---
packages/bank/src/hooks/index.ts | 43 +++++++++++++++++++++++++++-------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/packages/bank/src/hooks/index.ts b/packages/bank/src/hooks/index.ts
index a75b00d..09ce989 100644
--- a/packages/bank/src/hooks/index.ts
+++ b/packages/bank/src/hooks/index.ts
@@ -53,7 +53,7 @@ export function useBackendURL(
export function useBackendDefaultToken(): [
string | undefined,
StateUpdater<string | undefined>,
- ] {
+] {
return useLocalStorage('backend-token');
}
@@ -64,9 +64,9 @@ export function useBackendInstanceToken(
const [defaultToken, defaultSetToken] = useBackendDefaultToken();
// instance named 'default' use the default token
- if (id === 'default')
+ if (id === 'default')
return [defaultToken, defaultSetToken];
-
+
return [token, setToken];
}
@@ -76,7 +76,22 @@ export function useLang(initial?: string): [string,
StateUpdater<string>] {
? navigator.language || (navigator as any).userLanguage
: undefined;
const defaultLang = (browserLang || initial || 'en').substring(0, 2);
- return useNotNullLocalStorage('lang-preference', defaultLang);
+ const [value, setValue] = useNotNullLocalStorage('lang-preference',
defaultLang);
+ function updateValue(newValue: (string | ((v: string) => string))) {
+ if (document.body.parentElement) {
+ const htmlElement = document.body.parentElement
+ if (typeof newValue === 'string') {
+ htmlElement.lang = newValue;
+ setValue(newValue)
+ } else if (typeof newValue === 'function')
+ setValue((old) => {
+ const nv = newValue(old)
+ htmlElement.lang = nv;
+ return nv
+ })
+ } else setValue(newValue)
+ }
+ return [value, updateValue]
}
export function useLocalStorage(
@@ -96,13 +111,13 @@ export function useLocalStorage(
) => {
setStoredValue((p) => {
const toStore = value instanceof Function ? value(p) : value;
- if (typeof window !== 'undefined')
- if (!toStore)
+ if (typeof window !== 'undefined')
+ if (!toStore)
window.localStorage.removeItem(key);
- else
+ else
window.localStorage.setItem(key, toStore);
-
-
+
+
return toStore;
});
};
@@ -123,13 +138,13 @@ export function useNotNullLocalStorage(
const setValue = (value: string | ((val: string) => string)) => {
const valueToStore = value instanceof Function ? value(storedValue) :
value;
setStoredValue(valueToStore);
- if (typeof window !== 'undefined')
- if (!valueToStore)
+ if (typeof window !== 'undefined')
+ if (!valueToStore)
window.localStorage.removeItem(key);
- else
+ else
window.localStorage.setItem(key, valueToStore);
-
-
+
+
};
return [storedValue, setValue];
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.