import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Group } from '@/types'; import { useGroupData } from '@/hooks/useGroupData'; import { useServerData } from '@/hooks/useServerData'; import AddGroupForm from '@/components/AddGroupForm'; import EditGroupForm from '@/components/EditGroupForm'; import GroupCard from '@/components/GroupCard'; const GroupsPage: React.FC = () => { const { t } = useTranslation(); const { groups, loading: groupsLoading, error: groupError, setError: setGroupError, deleteGroup, triggerRefresh } = useGroupData(); const { servers } = useServerData(); const [editingGroup, setEditingGroup] = useState(null); const [showAddForm, setShowAddForm] = useState(false); const handleEditClick = (group: Group) => { setEditingGroup(group); }; const handleEditComplete = () => { setEditingGroup(null); triggerRefresh(); // Refresh the groups list after editing }; const handleDeleteGroup = async (groupId: string) => { const success = await deleteGroup(groupId); if (!success) { setGroupError(t('groups.deleteError')); } }; const handleAddGroup = () => { setShowAddForm(true); }; const handleAddComplete = () => { setShowAddForm(false); triggerRefresh(); // Refresh the groups list after adding }; return (

{t('pages.groups.title')}

{groupError && (

{groupError}

)} {groupsLoading ? (

{t('app.loading')}

) : groups.length === 0 ? (

{t('groups.noGroups')}

) : (
{groups.map((group) => ( ))}
)} {showAddForm && ( )} {editingGroup && ( setEditingGroup(null)} /> )}
); }; export default GroupsPage;