import { useEffect, useState } from "react"; import { uploadingManager, UploadingTask } from "../network/uploading.ts"; import { MdArrowUpward } from "react-icons/md"; export default function UploadingSideBar() { const [showUploading, setShowUploading] = useState(false); useEffect(() => { const listener = () => { console.log( "Uploading tasks changed; show uploading: ", uploadingManager.hasTasks(), ); setShowUploading(uploadingManager.hasTasks()); }; uploadingManager.addListener(listener); return () => { uploadingManager.removeListener(listener); }; }, []); if (!showUploading) { return <>; } return ( <>

Uploading

); } function UploadingList() { const [tasks, setTasks] = useState(uploadingManager.getTasks()); useEffect(() => { const listener = () => { setTasks(uploadingManager.getTasks()); }; uploadingManager.addListener(listener); return () => { uploadingManager.removeListener(listener); }; }, []); return ( <> {tasks.map((task) => { return ; })} ); } function TaskTile({ task }: { task: UploadingTask }) { const [progress, setProgress] = useState(task.progress); const [error, setError] = useState(null); useEffect(() => { const listener = () => { setProgress(task.progress); setError(task.errorMessage); }; task.addListener(listener); return () => { task.removeListener(listener); }; }, [task]); return (

{task.filename}

{error &&

{error}

}
{error && ( )}

Cancel Task

Are you sure you want to cancel this task?

); }