From 2d03fbce790c4f65e6712b4817bd104103c0de40 Mon Sep 17 00:00:00 2001 From: garronej Date: Fri, 8 Oct 2021 01:45:51 +0200 Subject: [PATCH] #20: Support advancedMsg --- .../generateFtl/common.ftl | 1 + src/lib/i18n/useKcMessage.tsx | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/bin/build-keycloak-theme/generateFtl/common.ftl b/src/bin/build-keycloak-theme/generateFtl/common.ftl index 9a08c481..798f44f8 100644 --- a/src/bin/build-keycloak-theme/generateFtl/common.ftl +++ b/src/bin/build-keycloak-theme/generateFtl/common.ftl @@ -182,6 +182,7 @@ } }, "msg": function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); }, + "advancedMsg": function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); }, } ); diff --git a/src/lib/i18n/useKcMessage.tsx b/src/lib/i18n/useKcMessage.tsx index 4454ffc4..e1602c7b 100644 --- a/src/lib/i18n/useKcMessage.tsx +++ b/src/lib/i18n/useKcMessage.tsx @@ -2,7 +2,6 @@ import { useCallback, useReducer } from "react"; import { useKcLanguageTag } from "./useKcLanguageTag"; import { kcMessages, evtTermsUpdated } from "./kcMessages/login"; -import type { ReactNode } from "react"; import { useEvt } from "evt/hooks"; //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35 import ReactMarkdown from "react-markdown"; @@ -45,7 +44,7 @@ export function useKcMessage() { [kcLanguageTag, trigger] ); - const msg = useCallback<(...args: Parameters) => ReactNode>( + const msg = useCallback<(...args: Parameters) => JSX.Element>( (key, ...args) => {msgStr(key, ...args)} @@ -53,6 +52,21 @@ export function useKcMessage() { [msgStr] ); - return { msg, msgStr }; + const advancedMsg = useCallback( + (key: string): string => { + + const match = key.match(/^\$\{([^{]+)\}$/); + + if( match === null ){ + return key; + } + + return msgStr(match[1] as MessageKey); + + }, + [msgStr] + ); + + return { msg, msgStr, advancedMsg }; } \ No newline at end of file