diff --git a/apps/web/src/app/my/school-email/_ui/SchoolEmailVerificationContent/index.tsx b/apps/web/src/app/my/school-email/_ui/SchoolEmailVerificationContent/index.tsx index 78890319..d10a070b 100644 --- a/apps/web/src/app/my/school-email/_ui/SchoolEmailVerificationContent/index.tsx +++ b/apps/web/src/app/my/school-email/_ui/SchoolEmailVerificationContent/index.tsx @@ -1,6 +1,6 @@ "use client"; -import { useRouter } from "next/navigation"; +import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useMemo, useState } from "react"; import { useGetMyInfo, usePostConfirmSchoolEmail, usePostSchoolEmail } from "@/apis/MyPage"; import BlockBtn from "@/components/button/BlockBtn"; @@ -25,6 +25,7 @@ const formatTime = (seconds: number) => { const SchoolEmailVerificationContent = () => { const router = useRouter(); + const searchParams = useSearchParams(); const { data: myInfo } = useGetMyInfo(); const postSchoolEmailMutation = usePostSchoolEmail(); const postConfirmSchoolEmailMutation = usePostConfirmSchoolEmail(); @@ -42,6 +43,7 @@ const SchoolEmailVerificationContent = () => { const isCodeInputValid = code.length === CODE_LENGTH; const isTimerExpired = remainingSeconds <= 0; const progressValue = step === "email" ? 0 : step === "code" ? 50 : 100; + const shouldReturnToApply = searchParams?.get("returnTo") === "applicationApply"; useEffect(() => { if (step !== "code" || remainingSeconds <= 0) return; @@ -132,7 +134,9 @@ const SchoolEmailVerificationContent = () => {
- router.replace("/")}>홈으로 + router.replace(shouldReturnToApply ? "/university/application/apply" : "/")}> + {shouldReturnToApply ? "지원하기로 돌아가기" : "홈으로"} +
diff --git a/apps/web/src/app/my/school-email/page.tsx b/apps/web/src/app/my/school-email/page.tsx index 170e4a56..f9e13901 100644 --- a/apps/web/src/app/my/school-email/page.tsx +++ b/apps/web/src/app/my/school-email/page.tsx @@ -1,6 +1,8 @@ import type { Metadata } from "next"; +import { Suspense } from "react"; import TopDetailNavigation from "@/components/layout/TopDetailNavigation"; +import CloudSpinnerPage from "@/components/ui/CloudSpinnerPage"; import { NO_INDEX_ROBOTS } from "@/utils/seo"; import SchoolEmailVerificationContent from "./_ui/SchoolEmailVerificationContent"; @@ -14,7 +16,9 @@ const SchoolEmailVerificationPage = () => { return ( <> - + }> + + ); }; diff --git a/apps/web/src/app/university/application/apply/ApplyPageContent.tsx b/apps/web/src/app/university/application/apply/ApplyPageContent.tsx index 80f29ff1..7421498c 100644 --- a/apps/web/src/app/university/application/apply/ApplyPageContent.tsx +++ b/apps/web/src/app/university/application/apply/ApplyPageContent.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter } from "next/navigation"; -import { useMemo, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { usePostSubmitApplication } from "@/apis/applications"; import { useGetMyGpaScore, useGetMyLanguageTestScore } from "@/apis/Scores"; import { useUniversitySearch } from "@/apis/universities"; @@ -23,6 +23,8 @@ const APPLY_PROGRESS_TOTAL_STEPS = 5; const ApplyPageContent = () => { const router = useRouter(); const homeUniversityId = useAuthStore((state) => state.homeUniversityId); + const isAuthInitialized = useAuthStore((state) => state.isInitialized); + const isAuthenticated = useAuthStore((state) => state.isAuthenticated); const [step, setStep] = useState(1); const maxChoiceCount = getHomeUniversityById(homeUniversityId)?.maxChoiceCount ?? DEFAULT_MAX_CHOICE_COUNT; const universitySearchOptions = useMemo( @@ -46,6 +48,14 @@ const ApplyPageContent = () => { const [curGpaScore, setCurGpaScore] = useState(null); const [curUniversityList, setCurUniversityList] = useState([]); + useEffect(() => { + if (!isAuthInitialized || !isAuthenticated || homeUniversityId !== null) { + return; + } + + router.replace("/my/school-email?returnTo=applicationApply"); + }, [homeUniversityId, isAuthInitialized, isAuthenticated, router]); + // 다음 스텝으로 넘어가기 const goNextStep = () => setStep((prev) => prev + 1); // 이전 스텝으로 돌아가기 @@ -89,6 +99,10 @@ const ApplyPageContent = () => { const hasSelectedUniversity = curUniversityList.some((universityId) => universityId > 0); const progressStep = step === 3 && hasSelectedUniversity ? APPLY_PROGRESS_TOTAL_STEPS : step + 1; + if (isAuthInitialized && isAuthenticated && homeUniversityId === null) { + return null; + } + return ( <>