import { useContext } from 'react'; import CanvasContext from '../Context/canvasContext/CanvasContext'; import { Button } from '../ui/button'; import { Loader, Trash, X } from 'lucide-react'; import { ScrollArea } from '../ui/scroll-area'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { deleteProject, getProjects } from '@/api/projectApi'; import { useNavigate } from 'react-router-dom'; import { toast } from '@/hooks/use-toast'; import ActiveObjectContext from '../Context/activeObject/ObjectContext'; import { FixedSizeList as List } from 'react-window'; export const ProjectPanel = () => { const { setSelectedPanel, canvas } = useContext(CanvasContext); const { setActiveObject } = useContext(ActiveObjectContext); const navigate = useNavigate(); const queryClient = useQueryClient(); // Initialize query client const { data: projects, isLoading: projectLoading, isSuccess: projectSuccess } = useQuery({ queryKey: ['projects'], queryFn: getProjects, // Simplified function call }); // To delete a project const { mutate: projectDelete, isPending: deletePending } = useMutation({ mutationFn: async (id) => await deleteProject(id), onSuccess: (data, id) => { if (data?.status === 200) { toast({ title: data?.status, description: data?.message, }); // Invalidate queries to refresh data queryClient.invalidateQueries({ queryKey: ["projects"] }); queryClient.invalidateQueries({ queryKey: ["project", id] }); // Clear canvas if it exists if (canvas) { canvas.clear(); canvas.renderAll(); canvas.setBackgroundColor("#ffffff", canvas.renderAll.bind(canvas)); } setActiveObject(null); setSelectedPanel(""); navigate("/"); } else { toast({ title: data?.status, description: data?.message, variant: "destructive" }); } }, onError: (error) => { toast({ title: "Error", description: error.message || "Failed to delete the project", variant: "destructive", }); } }); const Row = ({ index, style }) => { const project = filteredProjects[index]; return (
{project?.name}
{project?.description}
{projects?.message}
}