import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { HashRouter, Navigate, Route, Routes, useLocation } from "react-router";
import { Refine } from "@refinedev/core";
import { dataProvider } from "../shared/api/dataProvider";
import { CreatorHubLayout } from "./Layout";
import { LoginPage } from "./LoginPage";
import { AccountCreatePage, AccountDetail, AccountList } from "../features/accounts/AccountsPage";
import { AccountEditPage } from "../features/accounts/AccountEditPage";
import { CreatorCompetitorsPage } from "../features/creator/competitors/CreatorCompetitorsPage";
import { CreatorSettingsPage } from "../features/creator/settings/CreatorSettingsPage";
import { CreatorWorkbenchPage } from "../features/creator/workbench/CreatorWorkbenchPage";
import { AuditPage } from "../features/operations/AuditPage";
import { BrowserCreatePage, BrowserDetail, BrowserList } from "../features/environments/BrowsersPage";
import { BrowserVersionList } from "../features/environments/BrowserVersionsPage";
import { DraftPage } from "../features/operations/DraftPage";
import { GatewayList } from "../features/environments/GatewaysPage";
import { NetworkExitDetail, NetworkExitList } from "../features/environments/NetworkExitsPage";
import { TaskDetail, TaskList } from "../features/operations/TasksPage";
import { AttemptDetail } from "../features/operations/TracePages";
import "remixicon/fonts/remixicon.css";
import "./styles.css";
// 开发阶段认证仅由页面层掌握:401 会清除凭证并跳转登录;localStorage 为空时直接展示登录页。
// 不用 useState:HashRouter 的 pushState/replaceState 不触发 hashchange,状态会在导航后过期;
// 改为每次渲染直接读 localStorage,登录后 navigate 引发重渲染即可拿到新状态。
const authed = () => localStorage.getItem("creatorhub.auth") !== null;
function AuthGate({ children }) {
const { pathname } = useLocation();
const loggedIn = authed();
if (!loggedIn && pathname !== "/login")
return ;
if (loggedIn && pathname === "/login")
return ;
return children;
}
createRoot(document.getElementById("root")).render(
} />
}>
} />
} />
} />
} />
} />
}
/>
}
/>
} />
}
/>
}
/>
} />
}
/>
} />
} />
} />
} />
}
/>
} />
} />
} />
}
/>
} />
} />
} />
,
);