90 lines
4.2 KiB
TypeScript
Raw Normal View History

import React, { lazy, memo, Suspense } from "react";
2021-06-23 08:16:51 +02:00
import type { KcContextBase } from "../getKcContext/KcContextBase";
2021-03-06 14:42:56 +01:00
import type { KcProps } from "./KcProps";
import { __unsafe_useI18n as useI18n } from "../i18n";
import type { I18n } from "../i18n";
2021-03-03 00:04:06 +01:00
2022-07-29 01:31:55 +02:00
const Login = lazy(() => import("./Login"));
const Register = lazy(() => import("./Register"));
const RegisterUserProfile = lazy(() => import("./RegisterUserProfile"));
const Info = lazy(() => import("./Info"));
const Error = lazy(() => import("./Error"));
const LoginResetPassword = lazy(() => import("./LoginResetPassword"));
const LoginVerifyEmail = lazy(() => import("./LoginVerifyEmail"));
const Terms = lazy(() => import("./Terms"));
const LoginOtp = lazy(() => import("./LoginOtp"));
const LoginUpdatePassword = lazy(() => import("./LoginUpdatePassword"));
const LoginUpdateProfile = lazy(() => import("./LoginUpdateProfile"));
const LoginIdpLinkConfirm = lazy(() => import("./LoginIdpLinkConfirm"));
const LoginPageExpired = lazy(() => import("./LoginPageExpired"));
const LoginIdpLinkEmail = lazy(() => import("./LoginIdpLinkEmail"));
const LoginConfigTotp = lazy(() => import("./LoginConfigTotp"));
const LogoutConfirm = lazy(() => import("./LogoutConfirm"));
2022-09-09 02:07:29 +02:00
const UpdateUserProfile = lazy(() => import("./UpdateUserProfile"));
2022-09-09 12:55:57 +02:00
const IdpReviewUserProfile = lazy(() => import("./IdpReviewUserProfile"));
2022-07-29 01:31:55 +02:00
2022-09-01 21:31:27 +02:00
const KcApp = memo(({ kcContext, i18n: userProvidedI18n, ...kcProps }: { kcContext: KcContextBase; i18n?: I18n } & KcProps) => {
const i18n = (function useClosure() {
const i18n = useI18n({
kcContext,
"extraMessages": {},
"doSkip": userProvidedI18n !== undefined
});
return userProvidedI18n ?? i18n;
})();
2022-08-01 03:07:06 +02:00
if (i18n === null) {
return null;
}
2022-09-01 21:31:27 +02:00
const props = { i18n, ...kcProps };
2022-07-29 01:31:55 +02:00
return (
<Suspense>
{(() => {
switch (kcContext.pageId) {
case "login.ftl":
2022-09-01 21:31:27 +02:00
return <Login {...{ kcContext, ...props }} />;
case "register.ftl":
2022-09-01 21:31:27 +02:00
return <Register {...{ kcContext, ...props }} />;
case "register-user-profile.ftl":
2022-09-01 21:31:27 +02:00
return <RegisterUserProfile {...{ kcContext, ...props }} />;
case "info.ftl":
2022-09-01 21:31:27 +02:00
return <Info {...{ kcContext, ...props }} />;
case "error.ftl":
2022-09-01 21:31:27 +02:00
return <Error {...{ kcContext, ...props }} />;
case "login-reset-password.ftl":
2022-09-01 21:31:27 +02:00
return <LoginResetPassword {...{ kcContext, ...props }} />;
case "login-verify-email.ftl":
2022-09-01 21:31:27 +02:00
return <LoginVerifyEmail {...{ kcContext, ...props }} />;
case "terms.ftl":
2022-09-01 21:31:27 +02:00
return <Terms {...{ kcContext, ...props }} />;
case "login-otp.ftl":
2022-09-01 21:31:27 +02:00
return <LoginOtp {...{ kcContext, ...props }} />;
case "login-update-password.ftl":
2022-09-01 21:31:27 +02:00
return <LoginUpdatePassword {...{ kcContext, ...props }} />;
case "login-update-profile.ftl":
2022-09-01 21:31:27 +02:00
return <LoginUpdateProfile {...{ kcContext, ...props }} />;
case "login-idp-link-confirm.ftl":
2022-09-01 21:31:27 +02:00
return <LoginIdpLinkConfirm {...{ kcContext, ...props }} />;
case "login-idp-link-email.ftl":
2022-09-01 21:31:27 +02:00
return <LoginIdpLinkEmail {...{ kcContext, ...props }} />;
case "login-page-expired.ftl":
2022-09-01 21:31:27 +02:00
return <LoginPageExpired {...{ kcContext, ...props }} />;
case "login-config-totp.ftl":
2022-09-01 21:31:27 +02:00
return <LoginConfigTotp {...{ kcContext, ...props }} />;
case "logout-confirm.ftl":
2022-09-01 21:31:27 +02:00
return <LogoutConfirm {...{ kcContext, ...props }} />;
2022-09-09 02:07:29 +02:00
case "update-user-profile.ftl":
return <UpdateUserProfile {...{ kcContext, ...props }} />;
2022-09-09 12:55:57 +02:00
case "idp-review-user-profile.ftl":
return <IdpReviewUserProfile {...{ kcContext, ...props }} />;
}
})()}
</Suspense>
2022-07-29 01:31:55 +02:00
);
});
2022-07-29 01:31:55 +02:00
export default KcApp;