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 (
<>
>
);
}
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 && (
)}
);
}