import { useState } from "react"; import { Link } from "lucide-react"; import { LuSendHorizontal } from "react-icons/lu"; import SubmitStatusTable from "./SubmissionStatusTable"; import { useSubmission } from "../../../../hooks/useTasks"; import type { TaskSubmissionData } from "../../../../types/task.types"; import { customToast } from "../../../utils/showToast"; interface TaskFormLinkProps { taskId: string; projectId?: string; deadline?: Date; initialSubmission?: TaskSubmissionData | null; } export default function TaskFormLink({ taskId, projectId, deadline, initialSubmission }: TaskFormLinkProps) { const { submission, loading, submitLink, updateLink, remove } = useSubmission(taskId, initialSubmission, projectId); const [inputLink, setInputLink] = useState(initialSubmission?.url_link ?? ""); const [isEditing, setIsEditing] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!inputLink.trim()) { customToast.error( "Link belum dibuat", "Masukkan link untuk mengirim submission" ); return; } try { await customToast.promise( isEditing ? updateLink(submission!.id, inputLink) : submitLink(inputLink), { loading: isEditing ? "Memperbarui Link..." : "Mengirim Link...", success: () => ({ title: isEditing ? "Link diperbaharui" : "Link berhasil dikirim", description: isEditing ? "Perubahan submission Anda telah disimpan." : "Submission Anda telah berhasil dikirim.", }), error: (err) => ({ title: isEditing ? "Gagal memperbarui link!" : "Gagal mengirim link!", description: err?.response?.data?.message || err?.message || "Link yang anda submit gagal dikirim", }), } ); setIsEditing(false); } catch { // error sudah ditangani toast, tetap di form } }; const handleDelete = async () => { if (!confirm("Yakin ingin menghapus submission ini?")) return; try { const ok = await remove(submission!.id); if (ok) { setInputLink(""); setIsEditing(false); customToast.success( "Submission berhasil dihapus!", "Anda dapat mengirim submission baru kapan saja." ); } } catch (err: any) { customToast.error( "Gagal menghapus submission!", err?.response?.data?.message || "Terjadi kesalahan saat menghapus submission." ); } }; if (submission && !isEditing) { return ( setIsEditing(true)} onDelete={handleDelete} /> ); } return (
setInputLink(e.target.value)} className="w-full pl-10 pr-4 py-2.5 bg-box-primary/50 border border-box-border rounded-lg text-sm placeholder-font text-font focus:outline-none focus:bg-white focus:border-red-600 focus:ring-1 focus:ring-red-600 font-medium" />

Ensure the link is accessible to the mentor (e.g., Google Drive, Dropbox).

); }