import { useEffect } from "react"
import { Navigate, Outlet, useLocation } from "react-router-dom"
import { useMe } from "@/features/auth/hooks/useMe"
import { useAuthStore } from "@/features/auth/store/authStore"
import { PATHS } from "@/config/routes"
import { CenterSpinner } from "@/shared/components/CenterSpinner"
/**
* 저장된 user를 서버에서 확인한 뒤 보호 화면을 연다.
* 인증이 없으면 `/login?from=<원래 경로>` 로 redirect.
* `from`은 LoginForm에서 검증 후 사용 (외부 도메인·protocol-relative 차단).
*/
export default function ProtectedRoute() {
const user = useAuthStore((s) => s.user)
const clearUser = useAuthStore((s) => s.clearUser)
const me = useMe(user !== null)
const location = useLocation()
useEffect(() => {
if (me.isError) clearUser()
}, [clearUser, me.isError])
if (!user || me.isError) {
const from = `${location.pathname}${location.search}${location.hash}`
const query = from && from !== "/" ? `?from=${encodeURIComponent(from)}` : ""
return
}
if (me.isLoading) {
return
}
return
}