diff --git a/app/join/[id]/page.tsx b/app/join/[id]/page.tsx index bbda034..56388a1 100644 --- a/app/join/[id]/page.tsx +++ b/app/join/[id]/page.tsx @@ -1,23 +1,45 @@ 'use client'; import { useRouter, useParams } from 'next/navigation'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { useEnterParticipant } from '@/hooks/api/mutation/useEnterParticipant'; import { useToast } from '@/hooks/useToast'; import Toast from '@/components/ui/toast'; +import { useIsLoggedIn } from '@/hooks/useIsLoggedIn'; +import { setMeetingUserId } from '@/lib/storage'; export default function Page() { const params = useParams(); const meetingId = params?.id as string; + const router = useRouter(); + + const { isLogin, isChecking } = useIsLoggedIn(meetingId); // ⭐ meetingId 전달 + const [name, setName] = useState(''); const [password, setPassword] = useState(''); const [isRemembered, setIsRemembered] = useState(true); const [errorMessage, setErrorMessage] = useState(''); - const router = useRouter(); + const participantEnter = useEnterParticipant(); const { isVisible, show } = useToast(); - // 이름/비번 유효성 검사 (입력값이 있을 때만 버튼 활성화) + useEffect(() => { + if (isChecking) return; + + if (isLogin && meetingId) { + router.replace(`/meeting/${meetingId}`); + } + }, [isChecking, isLogin, meetingId, router]); + + if (isChecking || isLogin) { + return ( +
+
+

로그인 정보를 확인 중...

+
+ ); + } + const isFormValid = name.length > 0 && password.length === 4; const handleSubmit = async (e: React.FormEvent) => { @@ -34,11 +56,8 @@ export default function Page() { }); if (result.success) { - if (isRemembered) { - localStorage.setItem('userId', name); - } else { - sessionStorage.setItem('userId', name); - } + // ⭐ 모임별로 분리된 스토리지에 저장 + setMeetingUserId(meetingId, name, isRemembered); router.push(`/meeting/${meetingId}`); } else { @@ -53,13 +72,11 @@ export default function Page() { return (
- {/* 타이틀 */}

모임에 참여해 주세요.

- {/* 이름 입력 */}
- {/* 비밀번호 입력 */}