import { useState } from "react"; import { FileText, FileUp, Link } from "lucide-react"; import { resolveFileUrl } from "../../../utils/resolveFileFromUrl"; interface SubmitStatusTableProps { type: "file" | "link"; files?: Array<{ id: number; file_path: string; original_name: string }>; link?: string; submittedAt?: Date; deadline?: Date; onEdit: () => void; onDelete: () => void; disabled: boolean; } function getTimeEarly(submittedAt: Date, deadline: Date): string { const diffMs = deadline.getTime() - submittedAt.getTime(); if (diffMs <= 0) return "Submitted after deadline"; const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); const days = Math.floor(diffHours / 24); const hours = diffHours % 24; const parts = []; if (days > 0) parts.push(`${days} day${days > 1 ? "s" : ""}`); if (hours > 0) parts.push(`${hours} hour${hours > 1 ? "s" : ""}`); return `Assignment was submitted ${parts.join(" ")} early`; } export default function SubmitStatusTable({ type, files = [], link = "", submittedAt = new Date(), deadline, onEdit, onDelete, disabled = false, }: SubmitStatusTableProps) { const [confirmDelete, setConfirmDelete] = useState(false); const timeLabel = deadline ? getTimeEarly(submittedAt, deadline) : "Assignment was submitted early"; const rows = [ { label: "Submission status", value: "Submitted" }, { label: "Time Remaining", value: timeLabel }, ]; return (
{/* Header */}
{confirmDelete ? ( Are you sure you want to remove your submission? ) : ( <> Submit Status )}
{confirmDelete ? ( /* Confirm state */
) : ( /* Default state */
)}
{/* Rows */}
{rows.map((row) => (
{row.label}
{row.value}
))} {/* File / Link row */}
{type === "file" ? "File submission" : "Link submission"}
{type === "file" ? ( files?.length > 0 ? ( files?.map((f) => ( {f.original_name} )) ) : ( No file submitted ) ) : ( {link} )}
); }