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; isProjectActive?: boolean; } export default function TaskFormLink({ taskId, projectId, deadline, initialSubmission, isProjectActive = true, }: 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(); try { await customToast.promise( isEditing ? updateLink(submission!.id, inputLink) : submitLink(inputLink), { loading: isEditing ? "Memperbarui Link..." : "Mengirim Link...", success: (res) => ({ title: isEditing ? "Link diperbaharui" : "Link berhasil dikirim", description: res?.message ?? (isEditing ? "Perubahan submission Anda telah disimpan." : "Link 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 { } }; const handleDelete = async () => { try { const ok = await remove(submission!.id); if (ok) { setInputLink(""); setIsEditing(false); customToast.success( "Submission berhasil dihapus!", ok.message ); } } 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} disabled={!isProjectActive} /> ); } 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" />

Pastikan link yang disubmit bisa diakses oleh publik.

); }