import { Button, Code, Paper, Text } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { Navigate } from "react-router"; import { useUserContext } from "../context/user-context"; import { Layout } from "../components/layouts/layout"; import { ReactNode } from "react"; import { isQueryValid } from "../utils/utils"; import { useAppContext } from "../context/app-context"; import { Trans, useTranslation } from "react-i18next"; export const ContinuePage = () => { const queryString = window.location.search; const params = new URLSearchParams(queryString); const redirectUri = params.get("redirect_uri") ?? ""; const { isLoggedIn } = useUserContext(); const { disableContinue } = useAppContext(); const { t } = useTranslation(); if (!isLoggedIn) { return ; } if (!isQueryValid(redirectUri)) { return ; } const redirect = () => { notifications.show({ title: t("continueRedirectingTitle"), message: t("continueRedirectingSubtitle"), color: "blue", }); setTimeout(() => { window.location.href = redirectUri; }, 500); }; let uri; try { uri = new URL(redirectUri); } catch { return ( {t("Invalid redirect")} {t("The redirect URL is invalid")} ); } if (disableContinue) { window.location.href = redirectUri; return ( {t("continueRedirectingTitle")} {t("continueRedirectingSubtitle")} ); } if (window.location.protocol === "https:" && uri.protocol === "http:") { return ( {t("continueInsecureRedirectTitle")} }} /> ); } return ( {t("continueTitle")} {t("continueSubtitle")} ); }; export const ContinuePageLayout = ({ children }: { children: ReactNode }) => { return ( {children} ); };