import React, { useEffect, useState } from 'react'; import { getTrash } from '../../../services/dashboard/getTrash'; import DashboardCard from './DashboardCard'; import DashboardNavBar from './DashboardNavBar'; import { getUserData } from './functions/getUserData'; import { trashSearchProject } from '../../../services/dashboard/trashSearchProject'; import { restoreTrash } from '../../../services/dashboard/restoreTrash'; interface Project { _id: string; projectName: string; thumbnail: string; createdBy: string; projectUuid?: string; } interface DiscardedProjects { [key: string]: Project[]; } const DashboardTrash: React.FC = () => { const [discardedProjects, setDiscardedProjects] = useState({}); console.log('discardedProjects: ', discardedProjects); const [isSearchActive, setIsSearchActive] = useState(false); const { userId, organization } = getUserData(); const fetchTrashProjects = async () => { try { const projects = await getTrash(organization); console.log('organization: ', organization); console.log('trashedprojects: ', projects); if (JSON.stringify(projects) !== JSON.stringify(discardedProjects)) { setDiscardedProjects(projects); } } catch (error) { console.error('Error fetching trash projects:', error); } }; const handleTrashSearch = async ( inputValue: string ) => { if (!inputValue.trim()) { setIsSearchActive(false); return; } if (!setDiscardedProjects || !setIsSearchActive) return; const filterTrashedProcess = await trashSearchProject(organization, userId, inputValue); setIsSearchActive(true); setDiscardedProjects(filterTrashedProcess.message ? {} : filterTrashedProcess); }; const handleRestoreProject = async (projectId: any) => { try { const Organization = organization; const restoreProject = await restoreTrash( Organization, projectId ); setDiscardedProjects((prevDiscardedProjects: DiscardedProjects) => { // Check if TrashDatas exists and is an array if (!Array.isArray(prevDiscardedProjects?.TrashDatas)) { console.error('TrashDatas is not an array', prevDiscardedProjects); return prevDiscardedProjects; } const updatedTrashDatas = prevDiscardedProjects.TrashDatas.filter( (project) => project._id !== projectId ); return { ...prevDiscardedProjects, TrashDatas: updatedTrashDatas }; }); setIsSearchActive(false) } catch (error) { console.error('Error deleting project:', error); } }; const renderTrashProjects = () => { const projectList = discardedProjects[Object.keys(discardedProjects)[0]]; if (!projectList?.length) { return
No deleted projects found
; } return projectList.map((project) => ( )); }; useEffect(() => { console.log('isSearchActive:trash ', isSearchActive); if (!isSearchActive) { fetchTrashProjects(); } }, [isSearchActive]); return (
{renderTrashProjects()}
); }; export default DashboardTrash;