import { useEffect, useState } from "react"; import axios from "axios"; import { useNavigate } from "react-router-dom"; import StatsStyling from "../styles/stats_styling"; const styles = StatsStyling; const API_BASE_URL = import.meta.env.VITE_BACKEND_URL; type DatasetItem = { id: number; name?: string; status?: "processing" | "complete" | "error" | string; status_message?: string | null; completed_at?: string | null; created_at?: string | null; }; const DatasetsPage = () => { const navigate = useNavigate(); const [datasets, setDatasets] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { setLoading(false); setError("You must be signed in to view datasets."); return; } axios .get(`${API_BASE_URL}/user/datasets`, { headers: { Authorization: `Bearer ${token}` }, }) .then((response) => { const sorted = [...(response.data || [])].sort((a, b) => b.id - a.id); setDatasets(sorted); }) .catch((requestError: unknown) => { if (axios.isAxiosError(requestError)) { setError(String(requestError.response?.data?.error || requestError.message)); } else { setError("Failed to load datasets."); } }) .finally(() => { setLoading(false); }); }, []); if (loading) { return

Loading datasets...

; } return (

My Datasets

View and reopen datasets you previously uploaded.

{error && (
{error}
)} {!error && datasets.length === 0 && (
No datasets yet. Upload one to get started.
)} {!error && datasets.length > 0 && (
    {datasets.map((dataset) => { const isComplete = dataset.status === "complete"; const targetPath = isComplete ? `/dataset/${dataset.id}/stats` : `/dataset/${dataset.id}/status`; return (
  • {dataset.name || `Dataset #${dataset.id}`}
    ID #{dataset.id} • Status: {dataset.status || "unknown"}
    {dataset.status_message && (
    {dataset.status_message}
    )}
  • ); })}
)}
); }; export default DatasetsPage;