Login:Src:Components: remove checkConfirmLink request from ConfirmRoute
This commit is contained in:
parent
dc780ea052
commit
747b0b7a5e
@ -26,23 +26,16 @@
|
||||
|
||||
"use client";
|
||||
|
||||
import { notFound, usePathname, useSearchParams } from "next/navigation";
|
||||
import React, { createContext, useCallback, useEffect, useState } from "react";
|
||||
import { notFound, useSearchParams } from "next/navigation";
|
||||
import React, { createContext, useEffect, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
import { getCookie } from "@docspace/shared/utils";
|
||||
import { LANGUAGE } from "@docspace/shared/constants";
|
||||
import { checkConfirmLink, logout } from "@docspace/shared/api/user";
|
||||
import AppLoader from "@docspace/shared/components/app-loader";
|
||||
import { logout } from "@docspace/shared/api/user";
|
||||
|
||||
import { AuthenticatedAction, ValidationResult } from "@/utils/enums";
|
||||
import {
|
||||
TConfirmLinkResult,
|
||||
TConfirmLinkParams,
|
||||
ConfirmRouteProps,
|
||||
TError,
|
||||
TConfirmRouteContext,
|
||||
} from "@/types";
|
||||
import { ConfirmRouteProps, TConfirmRouteContext } from "@/types";
|
||||
|
||||
export const ConfirmRouteContext = createContext<TConfirmRouteContext>({
|
||||
linkData: {},
|
||||
@ -55,53 +48,18 @@ function ConfirmRoute(props: ConfirmRouteProps) {
|
||||
defaultPage,
|
||||
socketUrl,
|
||||
children,
|
||||
confirmLinkResult,
|
||||
confirmLinkParams,
|
||||
confirmType,
|
||||
} = props;
|
||||
|
||||
const [stateData, setStateData] = useState<TConfirmRouteContext>({
|
||||
linkData: {},
|
||||
roomData: {},
|
||||
});
|
||||
const [confirmLinkResult, setConfirmLinkResult] =
|
||||
useState<TConfirmLinkResult>();
|
||||
const [error, setError] = useState<TError>();
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
const { i18n, t } = useTranslation(["Common"]);
|
||||
|
||||
const searchParams = useSearchParams();
|
||||
const pathname = usePathname();
|
||||
|
||||
const isAuthenticated = !!socketUrl;
|
||||
|
||||
const getLinkParams = useCallback(() => {
|
||||
const queryParams = Object.fromEntries(
|
||||
new URLSearchParams(searchParams.toString()),
|
||||
) as TConfirmLinkParams;
|
||||
|
||||
const posSeparator = pathname.lastIndexOf("/");
|
||||
const type = !!posSeparator ? pathname?.slice(posSeparator + 1) : "";
|
||||
|
||||
const confirmLinkParams: TConfirmLinkParams = Object.assign(
|
||||
{ type },
|
||||
queryParams,
|
||||
const [stateData, setStateData] = useState<TConfirmRouteContext | undefined>(
|
||||
undefined,
|
||||
);
|
||||
|
||||
return { type, confirmLinkParams };
|
||||
}, [pathname, searchParams]);
|
||||
|
||||
const getConfirmLinkResult = useCallback(async () => {
|
||||
const { confirmLinkParams } = getLinkParams();
|
||||
|
||||
try {
|
||||
const response = (await checkConfirmLink(
|
||||
confirmLinkParams,
|
||||
)) as TConfirmLinkResult;
|
||||
setConfirmLinkResult(response);
|
||||
} catch (error) {
|
||||
const knownError = error as TError;
|
||||
setError(knownError);
|
||||
}
|
||||
}, [getLinkParams]);
|
||||
const { i18n, t } = useTranslation(["Common"]);
|
||||
const searchParams = useSearchParams();
|
||||
const isAuthenticated = !!socketUrl;
|
||||
|
||||
useEffect(() => {
|
||||
if (location.search.includes("culture")) return;
|
||||
@ -121,15 +79,7 @@ function ConfirmRoute(props: ConfirmRouteProps) {
|
||||
}
|
||||
}, [doAuthenticated, isAuthenticated, defaultPage, socketUrl]);
|
||||
|
||||
useEffect(() => {
|
||||
getConfirmLinkResult();
|
||||
}, [getConfirmLinkResult]);
|
||||
|
||||
useEffect(() => {
|
||||
if (confirmLinkResult?.result == undefined) return;
|
||||
|
||||
const { confirmLinkParams } = getLinkParams();
|
||||
|
||||
if (!stateData) {
|
||||
switch (confirmLinkResult.result) {
|
||||
case ValidationResult.Ok:
|
||||
const confirmHeader = searchParams.toString();
|
||||
@ -143,7 +93,6 @@ function ConfirmRoute(props: ConfirmRouteProps) {
|
||||
title: confirmLinkResult?.title,
|
||||
};
|
||||
setStateData((val) => ({ ...val, linkData, roomData }));
|
||||
setLoading(false);
|
||||
break;
|
||||
case ValidationResult.Invalid:
|
||||
case ValidationResult.Expired:
|
||||
@ -165,27 +114,19 @@ function ConfirmRoute(props: ConfirmRouteProps) {
|
||||
});
|
||||
notFound();
|
||||
}
|
||||
}, [confirmLinkResult, getLinkParams, t, searchParams]);
|
||||
}
|
||||
|
||||
const { type, confirmLinkParams } = getLinkParams();
|
||||
|
||||
if (!type && confirmLinkParams.type)
|
||||
if (!confirmType && confirmLinkParams.type)
|
||||
window.location.replace(
|
||||
`/confirm/${confirmLinkParams.type}?${searchParams.toString()}`,
|
||||
);
|
||||
|
||||
if (error) {
|
||||
console.error("FAILED checkConfirmLink", { error, confirmLinkParams });
|
||||
notFound();
|
||||
}
|
||||
|
||||
if (loading) {
|
||||
return <AppLoader />;
|
||||
}
|
||||
|
||||
return (
|
||||
<ConfirmRouteContext.Provider
|
||||
value={{ linkData: stateData.linkData, roomData: stateData.roomData }}
|
||||
value={{
|
||||
linkData: stateData?.linkData ?? {},
|
||||
roomData: stateData?.roomData ?? {},
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</ConfirmRouteContext.Provider>
|
||||
|
Loading…
Reference in New Issue
Block a user