rename pageBasename by pageId

This commit is contained in:
Joseph Garrone
2021-03-06 22:41:36 +01:00
parent 6eccd313b6
commit 307650aaea
10 changed files with 68 additions and 24 deletions

View File

@ -0,0 +1,38 @@
import { memo } from "react";
import { Template } from "./Template";
import type { KcProps } from "./KcProps";
import { assert } from "../tools/assert";
import { kcContext } from "../kcContext";
import { useKcTranslation } from "../i18n/useKcTranslation";
export const Error = memo((props: KcProps) => {
const { t } = useKcTranslation();
assert(
kcContext !== undefined &&
kcContext.pageId === "error.ftl" &&
kcContext.message !== undefined
);
const { message, client } = kcContext;
return (
<Template
{...props}
displayMessage={false}
headerNode={t("errorTitle")}
formNode={
<div id="kc-error-message">
<p className="instruction">{message.summary}</p>
<#if client?? && client.baseUrl?has_content>
<p><a id="backToApplication" href="${client.baseUrl}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
</#if>
</div>
}
/>
);
});

View File

@ -12,7 +12,7 @@ export const Info = memo((props: KcProps) => {
assert(
kcContext !== undefined &&
kcContext.pageBasename === "info.ftl" &&
kcContext.pageId === "info.ftl" &&
kcContext.message !== undefined
);

View File

@ -12,7 +12,7 @@ export const KcApp = memo((props: KcProps) => {
assert(kcContext !== undefined, "App is not currently served by a Keycloak server");
switch (kcContext.pageBasename) {
switch (kcContext.pageId) {
case "login.ftl": return <Login {...props} />;
case "register.ftl": return <Register {...props} />;
case "info.ftl": return <Info {...props} />;

View File

@ -14,7 +14,7 @@ export const Login = memo((props: KcProps) => {
assert(
kcContext !== undefined &&
kcContext.pageBasename === "login.ftl"
kcContext.pageId === "login.ftl"
);
const {

View File

@ -12,7 +12,7 @@ export const Register = memo((props: KcProps) => {
assert(
kcContext !== undefined &&
kcContext.pageBasename === "register.ftl"
kcContext.pageId === "register.ftl"
);
const {

View File

@ -9,5 +9,6 @@ export * from "./components/Login";
export * from "./components/Template";
export * from "./components/KcApp";
export * from "./components/Info";
export * from "./components/Error";
export * from "./tools/assert";

View File

@ -1,6 +1,6 @@
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/ftlValuesGlobalName";
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
import type { PageId } from "../bin/build-keycloak-theme/generateFtl";
import { id } from "evt/tools/typeSafety/id";
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
import { doExtends } from "evt/tools/typeSafety/doExtends";
@ -10,7 +10,7 @@ import type { LanguageLabel } from "./i18n/KcLanguageTag";
type ExtractAfterStartingWith<Prefix extends string, StrEnum> =
StrEnum extends `${Prefix}${infer U}` ? U : never;
export type KcContext = KcContext.Login | KcContext.Register | KcContext.Info;
export type KcContext = KcContext.Login | KcContext.Register | KcContext.Info | KcContext.Error;
export declare namespace KcContext {
export type Template = {
@ -55,7 +55,7 @@ export declare namespace KcContext {
};
export type Login = Template & {
pageBasename: "login.ftl";
pageId: "login.ftl";
url: {
loginResetCredentialsUrl: string;
registrationUrl: string;
@ -87,7 +87,7 @@ export declare namespace KcContext {
};
export type Register = Template & {
pageBasename: "register.ftl";
pageId: "register.ftl";
url: {
registrationAction: string;
};
@ -120,7 +120,7 @@ export declare namespace KcContext {
};
export type Info = Template & {
pageBasename: "info.ftl";
pageId: "info.ftl";
messageHeader?: string;
requiredActions?: ExtractAfterStartingWith<"requiredAction.",MessageKey>[];
skipLink: boolean;
@ -131,14 +131,13 @@ export declare namespace KcContext {
}
};
export type Error = Template & {
pageId: "error.ftl"
};
}
{
type T = KcContext["pageBasename"];
type U = Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
doExtends<T, U>();
doExtends<U, T>();
}
doExtends<KcContext["pageId"], PageId>();
doExtends<PageId, KcContext["pageId"]>();
export const kcContext = id<KcContext | undefined>((window as any)[ftlValuesGlobalName]);