import { useEffect } from "react";
import { useAuth } from "@/app/auth/AuthProvider.jsx";
import { buildLoginRedirectPath } from "@/features/auth/loginRedirect.js";
import { PageSkeleton } from "@/shared/ui/PageSkeleton.jsx";
import { OpsCenterApp } from "./OpsCenterApp.jsx";

export function AuthenticatedOpsCenter({ targetWindow = window }) {
    const { can, loading, user } = useAuth();
    const loginPath = buildLoginRedirectPath(targetWindow.location);

    useEffect(() => {
        if (!loading && !user) {
            // ops-center 是独立 HTML 入口，不能使用 SPA Navigate。登录页沿用主站既有 `redirect` 协议，
            // 成功后 LoginPage 会识别 /ops-center/ 为 document entry，再通过 location.replace 回到完整路径。
            targetWindow.location.replace(loginPath);
        }
    }, [loading, loginPath, targetWindow, user]);

    if (loading || !user) {
        // AuthProvider 可能正在用 refresh cookie 更新过期 token，完成前不能挂载 OpsCenterApp；
        // 否则 dashboard 的并发请求会先拿旧 token 返回 401，且认证完成后没有新的挂载时机自动恢复。
        return <PageSkeleton />;
    }

    return <OpsCenterApp can={can} />;
}
