import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import Sidebar from "../../components/Sidebar"; import FileList from "../../components/FileList"; import FileUploadModal from "../../components/FileUploadModal"; import { FiPlus } from "react-icons/fi"; const Dashboard = () => { const [files, setFiles] = useState([]); const [isUploadModalOpen, setIsUploadModalOpen] = useState(false); const [error, setError] = useState(""); const navigate = useNavigate(); const API_URL = import.meta.env.VITE_API_URL; const isUserLoggedIn = () => { const token = localStorage.getItem("token"); const username = localStorage.getItem("username"); const expiresIn = localStorage.getItem("expiresIn"); if (!token || !username || !expiresIn) return false; const expiryTime = new Date(expiresIn).getTime(); const now = new Date().getTime(); if (now > expiryTime) { localStorage.clear(); return false; } return true; }; const fetchFiles = async () => { try { const response = await fetch(`${API_URL}/api/hdfs/listFiles?hdfsPath=/`); const data = await response.json(); setFiles(data); } catch (error) { console.error("Failed to fetch files:", error); setError("Failed to load files. Please try again later."); } }; useEffect(() => { if (!isUserLoggedIn()) { navigate("/login"); } else { fetchFiles(); } }, [navigate]); return ( <>

Dashboard

{error ? (

{error}

) : ( )}
setIsUploadModalOpen(false)} onUploadSuccess={() => { fetchFiles(); setIsUploadModalOpen(false); }} /> ); }; export default Dashboard;