"use client"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Calendar as CalendarIcon } from "lucide-react"; import { format } from "date-fns"; import { cn } from "@/lib/utils"; import { Calendar } from "@/components/ui/calendar"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet"; import { Button } from "@/components/ui/button"; import React, { ReactNode } from "react"; import { useParams } from "next/navigation"; import { useRouter } from "next/navigation"; import { Badge } from "./ui/badge"; export default function TaskInfo({ row, children, }: { row: any; children: ReactNode; }) { const [date, setDate] = React.useState( row.due_date ? new Date(row.due_date) : undefined ); const params = useParams(); const router = useRouter(); const [isSheetOpen, setIsSheetOpen] = React.useState(false); async function updateTask(info: any) { try { const req = { id: row.id, ...info, }; const data = await fetch( `/w/${params.workspaceID}/p/${params.projectID}/tasks/mutate`, { method: "PUT", body: JSON.stringify(req), } ); } catch (err) { console.error(err); } } async function fetchWorkspaceUsers() { try { const data = await fetch(`/w/${params.workspaceID}/user/fetch`); const res = await data.json(); console.log("FETCH WORKSPACE USERS RES ===>", res); } catch (err) { console.error(err); } } // TODO: add a function that takes in the task id and user id and then assigns the user to the task using the /w/:workspaceID/p/:projectID/tasks/assign API route. async function assignUserToTask() { try { const data = await fetch( `/w/${params.workspaceID}/p/${params.projectID}/tasks/assign`, { method: "POST", body: JSON.stringify({ task_id: row.id, user_id: 1, }), } ); const res = await data.json(); console.log("ASSIGN USER TO TASK RES ===>", res); } catch (err) { console.error(err); } } const handleDateChange = (newDate: Date | undefined) => { setDate(newDate); // Update the local state if (newDate) { updateTask({ due_date: newDate.toISOString() }); // Persist the change } }; const handleSheetOpenChange = (open: boolean) => { setIsSheetOpen(open); // If the sheet is being closed, refresh the router if (!open) { router.refresh(); } }; return (
{row.feature_id && ( FEAT-{row.feature_id} )} {row.name}
{row.name} {row.description}
{/*
Assignee
*/}
Status
Priority
Due Date
{children}
); }