For useKcMessage we prefer returning callbacks with a changing references

This commit is contained in:
Joseph Garrone
2021-04-08 12:20:06 +02:00
parent a8b4493aa1
commit 1df685df92

View File

@ -1,7 +1,7 @@
import { useCallback } from "react";
import { useKcLanguageTag } from "./useKcLanguageTag"; import { useKcLanguageTag } from "./useKcLanguageTag";
import { messages } from "./generated_messages/login"; import { messages } from "./generated_messages/login";
import { useConstCallback } from "powerhooks";
import type { ReactNode } from "react"; import type { ReactNode } from "react";
import { id } from "evt/tools/typeSafety/id"; import { id } from "evt/tools/typeSafety/id";
@ -11,7 +11,7 @@ export function useKcMessage() {
const { kcLanguageTag } = useKcLanguageTag(); const { kcLanguageTag } = useKcLanguageTag();
const msgStr = useConstCallback( const msgStr = useCallback(
(key: MessageKey, ...args: (string | undefined)[]): string => { (key: MessageKey, ...args: (string | undefined)[]): string => {
let str: string = messages[kcLanguageTag as any as "en"][key] ?? messages["en"][key]; let str: string = messages[kcLanguageTag as any as "en"][key] ?? messages["en"][key];
@ -28,14 +28,16 @@ export function useKcMessage() {
return str; return str;
} },
[kcLanguageTag]
); );
const msg = useConstCallback( const msg = useCallback(
id<(...args: Parameters<typeof msgStr>) => ReactNode>( id<(...args: Parameters<typeof msgStr>) => ReactNode>(
(key, ...args) => (key, ...args) =>
<span className={key} dangerouslySetInnerHTML={{ "__html": msgStr(key, ...args) }} /> <span className={key} dangerouslySetInnerHTML={{ "__html": msgStr(key, ...args) }} />
) ),
[kcLanguageTag]
); );
return { msg, msgStr }; return { msg, msgStr };