diff --git a/packages/login/src/components/ConfirmRoute.tsx b/packages/login/src/components/ConfirmRoute.tsx index 775ab03bbf..ddb0cbc39d 100644 --- a/packages/login/src/components/ConfirmRoute.tsx +++ b/packages/login/src/components/ConfirmRoute.tsx @@ -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({ linkData: {}, @@ -55,54 +48,19 @@ function ConfirmRoute(props: ConfirmRouteProps) { defaultPage, socketUrl, children, + confirmLinkResult, + confirmLinkParams, + confirmType, } = props; - const [stateData, setStateData] = useState({ - linkData: {}, - roomData: {}, - }); - const [confirmLinkResult, setConfirmLinkResult] = - useState(); - const [error, setError] = useState(); - const [loading, setLoading] = useState(true); + const [stateData, setStateData] = useState( + undefined, + ); 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, - ); - - 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]); - useEffect(() => { if (location.search.includes("culture")) return; const lng = getCookie(LANGUAGE); @@ -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 ; - } - return ( {children}