From 7e7071305f26efee61671f61b46f77675355d0e9 Mon Sep 17 00:00:00 2001 From: garronej Date: Wed, 27 Apr 2022 21:02:10 +0200 Subject: [PATCH] i18n rebuild from the ground up --- package.json | 2 + src/lib/components/Error.tsx | 4 +- src/lib/components/Info.tsx | 4 +- src/lib/components/Login.tsx | 4 +- src/lib/components/LoginIdpLinkConfirm.tsx | 4 +- src/lib/components/LoginIdpLinkEmail.tsx | 4 +- src/lib/components/LoginOtp.tsx | 4 +- src/lib/components/LoginPageExpired.tsx | 4 +- src/lib/components/LoginResetPassword.tsx | 4 +- src/lib/components/LoginUpdatePassword.tsx | 4 +- src/lib/components/LoginUpdateProfile.tsx | 4 +- src/lib/components/LoginVerifyEmail.tsx | 4 +- src/lib/components/Register.tsx | 4 +- src/lib/components/RegisterUserProfile.tsx | 6 +- src/lib/components/Template.tsx | 42 ++-- src/lib/components/Terms.tsx | 27 ++- src/lib/getKcContext/KcContextBase.ts | 12 +- .../kcContextMocks/kcContextMocks.ts | 30 ++- src/lib/i18n/KcLanguageTag.ts | 63 ------ src/lib/i18n/index.tsx | 180 ++++++++++++++++++ src/lib/i18n/kcMessages/login.ts | 50 ----- src/lib/i18n/useKcLanguageTag.ts | 28 --- src/lib/i18n/useKcMessage.tsx | 115 ----------- src/lib/index.ts | 14 +- src/lib/useFormValidationSlice.tsx | 27 ++- yarn.lock | 5 + 26 files changed, 288 insertions(+), 361 deletions(-) delete mode 100644 src/lib/i18n/KcLanguageTag.ts create mode 100644 src/lib/i18n/index.tsx delete mode 100644 src/lib/i18n/kcMessages/login.ts delete mode 100644 src/lib/i18n/useKcLanguageTag.ts delete mode 100644 src/lib/i18n/useKcMessage.tsx diff --git a/package.json b/package.json index 8ae9a8c7..81cf29c8 100755 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ }, "devDependencies": { "@emotion/react": "^11.4.1", + "@types/memoizee": "^0.4.7", "@types/node": "^17.0.25", "@types/react": "^17.0.0", "copyfiles": "^2.4.1", @@ -77,6 +78,7 @@ "cheerio": "^1.0.0-rc.5", "cli-select": "^1.1.2", "evt": "2.0.0-beta.39", + "memoizee": "^0.4.15", "minimal-polyfills": "^2.2.1", "path-browserify": "^1.0.1", "powerhooks": "^0.14.0", diff --git a/src/lib/components/Error.tsx b/src/lib/components/Error.tsx index e1d31148..1de141e5 100644 --- a/src/lib/components/Error.tsx +++ b/src/lib/components/Error.tsx @@ -2,10 +2,10 @@ import { memo } from "react"; import { Template } from "./Template"; import type { KcProps } from "./KcProps"; import type { KcContextBase } from "../getKcContext/KcContextBase"; -import { useKcMessage } from "../i18n/useKcMessage"; +import { getMsg } from "../i18n"; export const Error = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Error } & KcProps) => { - const { msg } = useKcMessage(); + const { msg } = getMsg(kcContext); const { message, client } = kcContext; diff --git a/src/lib/components/Info.tsx b/src/lib/components/Info.tsx index 40a593bd..74160fe6 100644 --- a/src/lib/components/Info.tsx +++ b/src/lib/components/Info.tsx @@ -3,10 +3,10 @@ import { Template } from "./Template"; import type { KcProps } from "./KcProps"; import { assert } from "../tools/assert"; import type { KcContextBase } from "../getKcContext/KcContextBase"; -import { useKcMessage } from "../i18n/useKcMessage"; +import { getMsg } from "../i18n"; export const Info = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Info } & KcProps) => { - const { msg } = useKcMessage(); + const { msg } = getMsg(kcContext); assert(kcContext.message !== undefined); diff --git a/src/lib/components/Login.tsx b/src/lib/components/Login.tsx index 8c6f6691..de807e9e 100644 --- a/src/lib/components/Login.tsx +++ b/src/lib/components/Login.tsx @@ -2,7 +2,7 @@ import { useState, memo } from "react"; import { Template } from "./Template"; import type { KcProps } from "./KcProps"; import type { KcContextBase } from "../getKcContext/KcContextBase"; -import { useKcMessage } from "../i18n/useKcMessage"; +import { getMsg } from "../i18n"; import { useCssAndCx } from "tss-react"; import { useConstCallback } from "powerhooks/useConstCallback"; import type { FormEventHandler } from "react"; @@ -10,7 +10,7 @@ import type { FormEventHandler } from "react"; export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Login } & KcProps) => { const { social, realm, url, usernameEditDisabled, login, auth, registrationDisabled } = kcContext; - const { msg, msgStr } = useKcMessage(); + const { msg, msgStr } = getMsg(kcContext); const { cx } = useCssAndCx(); diff --git a/src/lib/components/LoginIdpLinkConfirm.tsx b/src/lib/components/LoginIdpLinkConfirm.tsx index 803ab1a0..658aa7ac 100644 --- a/src/lib/components/LoginIdpLinkConfirm.tsx +++ b/src/lib/components/LoginIdpLinkConfirm.tsx @@ -2,13 +2,13 @@ import { memo } from "react"; import { Template } from "./Template"; import type { KcProps } from "./KcProps"; import type { KcContextBase } from "../getKcContext/KcContextBase"; -import { useKcMessage } from "../i18n/useKcMessage"; +import { getMsg } from "../i18n"; import { useCssAndCx } from "tss-react"; export const LoginIdpLinkConfirm = memo(({ kcContext, ...props }: { kcContext: KcContextBase.LoginIdpLinkConfirm } & KcProps) => { const { url, idpAlias } = kcContext; - const { msg } = useKcMessage(); + const { msg } = getMsg(kcContext); const { cx } = useCssAndCx(); diff --git a/src/lib/components/LoginIdpLinkEmail.tsx b/src/lib/components/LoginIdpLinkEmail.tsx index 50534685..5ddecf4d 100644 --- a/src/lib/components/LoginIdpLinkEmail.tsx +++ b/src/lib/components/LoginIdpLinkEmail.tsx @@ -2,12 +2,12 @@ import { memo } from "react"; import { Template } from "./Template"; import type { KcProps } from "./KcProps"; import type { KcContextBase } from "../getKcContext/KcContextBase"; -import { useKcMessage } from "../i18n/useKcMessage"; +import { getMsg } from "../i18n"; export const LoginIdpLinkEmail = memo(({ kcContext, ...props }: { kcContext: KcContextBase.LoginIdpLinkEmail } & KcProps) => { const { url, realm, brokerContext, idpAlias } = kcContext; - const { msg } = useKcMessage(); + const { msg } = getMsg(kcContext); return (