import React from 'react'; import { Sidebar } from '@/components/layout/Sidebar'; import { Header } from '@/components/layout/Header'; import { CreateArchitectureModal } from '@/components/modals/CreateArchitectureModal'; import { EditArchitectureModal } from '@/components/modals/EditArchitectureModal'; import { ArchitectureCard } from '@/components/cards/ArchitectureCard'; import { DeleteArchitectureConfirmationModal } from '@/components/modals/DeleteArchitectureConfirmationModal'; import { useArchitectureQuery, Architecture } from '@/hooks/use-query/useArchitectureQuery.ts'; import { useSearch } from '@/hooks/useSearch.ts'; import '@/styles/cards.css'; export const ArchitecturesPage = () => { const [createArchitectureOpen, setCreateArchitectureOpen] = React.useState(false); const [selectedArchitecture, setSelectedArchitecture] = React.useState< { id: string; name: string } | null >(null); const [deleteConfirmationOpen, setDeleteConfirmationOpen] = React.useState(false); const [architectureToDelete, setArchitectureToDelete] = React.useState<{ id: string; name: string } | null>(null); const [searchTerm, setSearchTerm] = React.useState(''); const [isSidebarOpen, setIsSidebarOpen] = React.useState(false); const openCreateArchitecture = () => setCreateArchitectureOpen(true); const closeCreateArchitecture = () => setCreateArchitectureOpen(false); const selectArchitecture = (architecture: Architecture) => setSelectedArchitecture({ id: architecture.ID, name: architecture.ArchID }); const { architectures, deleteArchitecture, isLoading } = useArchitectureQuery(); const filteredArchitectures = useSearch(architectures, searchTerm) as Architecture[]; const handleDelete = async (archId: string, archName: string) => { setArchitectureToDelete({ id: archId, name: archName }); setDeleteConfirmationOpen(true); }; const handleConfirmDelete = async () => { if (architectureToDelete) { try { await deleteArchitecture(architectureToDelete.id); setDeleteConfirmationOpen(false); setArchitectureToDelete(null); } catch (error) { console.error('Error deleting architecture:', error); throw error; } } }; return (
setIsSidebarOpen(false)} />
setIsSidebarOpen(true)} /> {isLoading ? (
) : filteredArchitectures.length === 0 ? (
{searchTerm ? 'No architectures found matching your search.' : 'No architectures have been created yet.'}
) : (
{filteredArchitectures.map((architecture: Architecture) => ( selectArchitecture(architecture)} onDelete={() => handleDelete(architecture.ID, architecture.ArchID)} /> ))}
)}
{createArchitectureOpen && ( )} {selectedArchitecture && ( setSelectedArchitecture(null)} /> )} {deleteConfirmationOpen && architectureToDelete && ( { setDeleteConfirmationOpen(false); setArchitectureToDelete(null); }} onConfirm={handleConfirmDelete} /> )}
); };