diff --git a/src/pages/home/KakaoCallbackPage.tsx b/src/pages/home/KakaoCallbackPage.tsx index d8be772..a0b17a7 100644 --- a/src/pages/home/KakaoCallbackPage.tsx +++ b/src/pages/home/KakaoCallbackPage.tsx @@ -2,6 +2,7 @@ import { useEffect, useRef } from 'react'; import { useNavigate } from 'react-router-dom'; import { loginWithKakaoAccessToken } from '@/api/user/auth.api'; import { likePlace } from '@/api/like/like.api'; +import { Loader } from '@/component'; function pickSafeInternalPath(p?: string | null) { if (!p) return undefined; @@ -49,10 +50,8 @@ export default function KakaoCallbackPage() { } const kakaoAccessToken = tokenJson.access_token as string; - // 1) 우리 서버 로그인 const result = await loginWithKakaoAccessToken(kakaoAccessToken); - // 2) state/세션에서 복귀 경로와 액션 꺼내기 const rawState = qs.get('state'); let redirectFromState: string | undefined; let actionFromState: any; @@ -61,7 +60,6 @@ export default function KakaoCallbackPage() { redirectFromState = parsed?.redirect; actionFromState = parsed?.action; } catch { - // 만약 state를 그냥 경로 문자열로 쓴 경우 대비 redirectFromState = rawState || undefined; } @@ -73,24 +71,21 @@ export default function KakaoCallbackPage() { const action = actionFromState || (actionStorage ? JSON.parse(actionStorage) : null); - // 한번 쓰면 비워두기 sessionStorage.removeItem('postLoginRedirect'); sessionStorage.removeItem('postLoginAction'); - // 3) 신규 유저는 온보딩으로 if (result.newUser) { navigate('/register/2', { replace: true }); return; } - // 4) 액션 재생 (예: 상세에서 비로그인으로 누른 '좋아요') if (action?.kind === 'LIKE_PLACE' && action.contentId) { try { await likePlace({ contentId: action.contentId, ...(action.payload ?? {}), }); - // 선택: 돌아간 페이지에서 토스트 띄우고 싶으면 플래그 남기기 + sessionStorage.setItem('postLoginToast', '좋아요 완료!'); } catch (e) { console.error('post-login like failed', e); @@ -98,7 +93,6 @@ export default function KakaoCallbackPage() { } } - // 5) 원래 페이지로 replace 이동 (history에 콜백 안 남김) navigate(redirectTo, { replace: true }); } catch (e) { console.error(e); @@ -108,5 +102,9 @@ export default function KakaoCallbackPage() { })(); }, [navigate]); - return