import { adminCenterApiService } from '@/api/admin-center/admin-center.api.service'; import Avatars from '@/components/avatars/avatars'; import SettingTeamDrawer from '@/components/admin-center/teams/settings-drawer/settings-drawer'; import { toggleSettingDrawer, deleteTeam, fetchTeams } from '@/features/teams/teamSlice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { IOrganizationTeam } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { SettingOutlined, DeleteOutlined } from '@/shared/antd-imports'; import { Badge, Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography, } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; import { useMediaQuery } from 'react-responsive'; interface TeamsTableProps { teams: IOrganizationTeam[]; currentTeam: IOrganizationTeam | null; t: TFunction; loading: boolean; reloadTeams: () => void; } const TeamsTable: React.FC = ({ teams, currentTeam = null, t, loading, reloadTeams, }) => { const dispatch = useAppDispatch(); const isTablet = useMediaQuery({ query: '(min-width: 1000px)' }); const [deleting, setDeleting] = useState(false); const [isSettingDrawerOpen, setIsSettingDrawerOpen] = useState(false); const [selectedTeam, setSelectedTeam] = useState(''); const handleTeamDelete = async (teamId: string) => { if (!teamId) return; try { setDeleting(true); const res = await adminCenterApiService.deleteTeam(teamId); if (res.done) { reloadTeams(); dispatch(fetchTeams()); } } catch (error) { logger.error('Error deleting team', error); } finally { setDeleting(false); } }; const columns: TableProps['columns'] = [ { title: t('team'), key: 'teamName', render: (record: IOrganizationTeam) => ( {record.name} ), }, { title: {t('membersCount')}, key: 'membersCount', render: (record: IOrganizationTeam) => ( {record.members_count} ), }, { title: t('members'), key: 'members', render: (record: IOrganizationTeam) => ( ), }, { title: '', key: 'button', render: (record: IOrganizationTeam) => (
handleTeamDelete(record.id || '')}>
), }, ]; return ( <> record.id} loading={loading} pagination={{ showSizeChanger: true, defaultPageSize: 20, pageSizeOptions: ['5', '10', '15', '20', '50', '100'], }} /> ); }; export default TeamsTable;