feat: add "My Datasets" page

This commit is contained in:
2026-03-03 19:52:12 +00:00
parent 531ddb0467
commit 55319461e5
4 changed files with 187 additions and 1 deletions

View File

@@ -34,6 +34,9 @@ const AppLayout = () => {
const navigate = useNavigate();
const [isSignedIn, setIsSignedIn] = useState(false);
const [currentUser, setCurrentUser] = useState<Record<string, unknown> | null>(null);
const [lastDatasetId, setLastDatasetId] = useState<string | null>(
localStorage.getItem("last_dataset_id")
);
const syncAuthState = useCallback(async () => {
const token = localStorage.getItem("access_token");
@@ -63,6 +66,17 @@ const AppLayout = () => {
void syncAuthState();
}, [location.pathname, syncAuthState]);
useEffect(() => {
const datasetMatch = location.pathname.match(/^\/dataset\/(\d+)\/(status|stats)$/);
if (!datasetMatch) {
return;
}
const datasetId = datasetMatch[1];
localStorage.setItem("last_dataset_id", datasetId);
setLastDatasetId(datasetId);
}, [location.pathname]);
const onAuthButtonClick = () => {
if (isSignedIn) {
localStorage.removeItem("access_token");
@@ -107,6 +121,31 @@ const AppLayout = () => {
</div>
<div style={{ ...styles.controls, flexWrap: "wrap" }}>
<button
type="button"
style={location.pathname === "/upload" ? styles.buttonPrimary : styles.buttonSecondary}
onClick={() => navigate("/upload")}
>
Upload
</button>
<button
type="button"
style={location.pathname === "/datasets" ? styles.buttonPrimary : styles.buttonSecondary}
onClick={() => navigate("/datasets")}
>
My datasets
</button>
<button
type="button"
style={location.pathname.endsWith("/stats") ? styles.buttonPrimary : styles.buttonSecondary}
onClick={() => lastDatasetId && navigate(`/dataset/${lastDatasetId}/stats`)}
disabled={!lastDatasetId}
>
{lastDatasetId ? "Last stats" : "Last stats (none)"}
</button>
<button
type="button"
style={isSignedIn ? styles.buttonSecondary : styles.buttonPrimary}