Implement a mechanism to overload kcContext
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
|
||||
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
||||
import { objectKeys } from "tsafe/objectKeys";
|
||||
import { kcMessages } from "./kcMessages/login";
|
||||
|
||||
export type KcLanguageTag = keyof typeof kcMessages;
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
import { kcMessages } from "../generated_kcMessages/login";
|
||||
import { Evt } from "evt";
|
||||
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
||||
import { objectKeys } from "tsafe/objectKeys";
|
||||
|
||||
export const evtTermsUpdated = Evt.asNonPostable(Evt.create<void>());
|
||||
|
||||
|
@ -2,22 +2,39 @@
|
||||
import { createUseGlobalState } from "powerhooks";
|
||||
import { getKcContext } from "../getKcContext";
|
||||
import { getBestMatchAmongKcLanguageTag } from "./KcLanguageTag";
|
||||
import type { StatefulEvt } from "powerhooks";
|
||||
import { KcLanguageTag } from "./KcLanguageTag";
|
||||
|
||||
const { kcContext } = getKcContext();
|
||||
|
||||
//export const { useKcLanguageTag, evtKcLanguageTag } = createUseGlobalState(
|
||||
const wrap = createUseGlobalState(
|
||||
"kcLanguageTag",
|
||||
() => getBestMatchAmongKcLanguageTag(
|
||||
kcContext?.locale?.current ??
|
||||
navigator.language
|
||||
),
|
||||
() => {
|
||||
|
||||
|
||||
const { kcContext } = getKcContext();
|
||||
|
||||
const languageLike =
|
||||
kcContext?.locale?.current ??
|
||||
(
|
||||
typeof navigator === "undefined" ?
|
||||
undefined :
|
||||
navigator.language
|
||||
);
|
||||
|
||||
if (languageLike === undefined) {
|
||||
return "en";
|
||||
}
|
||||
|
||||
return getBestMatchAmongKcLanguageTag(languageLike);
|
||||
|
||||
},
|
||||
{ "persistance": "localStorage" }
|
||||
);
|
||||
|
||||
export const { useKcLanguageTag } = wrap;
|
||||
|
||||
export function getEvtKcLanguage() {
|
||||
export function getEvtKcLanguage(): StatefulEvt<KcLanguageTag> {
|
||||
return wrap.evtKcLanguageTag;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user