import React, { useReducer, useEffect, memo } from "react"; import Template from "./Template"; import type { KcProps } from "./KcProps"; import type { KcContextBase } from "../getKcContext/KcContextBase"; import { getMsg } from "../i18n"; import { useCssAndCx } from "tss-react"; import { kcMessages, getCurrentKcLanguageTag } from "../i18n"; import type { KcLanguageTag } from "../i18n"; /** Allow to avoid bundling the terms and download it on demand*/ export function useDownloadTerms(params: { kcContext: KcContextBase; downloadTermMarkdown: (params: { currentKcLanguageTag: KcLanguageTag }) => Promise; }) { const { kcContext, downloadTermMarkdown } = params; const [, forceUpdate] = useReducer(x => x + 1, 0); useEffect(() => { const currentKcLanguageTag = getCurrentKcLanguageTag(kcContext); downloadTermMarkdown({ currentKcLanguageTag }).then(thermMarkdown => { kcMessages[currentKcLanguageTag].termsText = thermMarkdown; forceUpdate(); }); }, []); } const Terms = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Terms } & KcProps) => { const { msg, msgStr } = getMsg(kcContext); const { cx } = useCssAndCx(); const { url } = kcContext; return (