import { useFetchUserInfo, useListTenant } from '@/hooks/user-setting-hooks'; import { ITenant } from '@/interfaces/database/user-setting'; import { formatDate } from '@/utils/date'; import type { TableProps } from 'antd'; import { Button, Space, Table } from 'antd'; import { useTranslation } from 'react-i18next'; import { TenantRole } from '../constants'; import { useHandleAgreeTenant, useHandleQuitUser } from './hooks'; const TenantTable = () => { const { t } = useTranslation(); const { data, loading } = useListTenant(); const { handleAgree } = useHandleAgreeTenant(); const { data: user } = useFetchUserInfo(); const { handleQuitTenantUser } = useHandleQuitUser(); const columns: TableProps<ITenant>['columns'] = [ { title: t('common.name'), dataIndex: 'nickname', key: 'nickname', }, { title: t('setting.email'), dataIndex: 'email', key: 'email', }, { title: t('setting.updateDate'), dataIndex: 'update_date', key: 'update_date', render(value) { return formatDate(value); }, }, { title: t('common.action'), key: 'action', render: (_, { role, tenant_id }) => { if (role === TenantRole.Invite) { return ( <Space> <Button type="link" onClick={handleAgree(tenant_id, true)}> {t(`setting.agree`)} </Button> <Button type="link" onClick={handleAgree(tenant_id, false)}> {t(`setting.refuse`)} </Button> </Space> ); } else if (role === TenantRole.Normal && user.id !== tenant_id) { return ( <Button type="link" onClick={handleQuitTenantUser(user.id, tenant_id)} > {t('setting.quit')} </Button> ); } }, }, ]; return ( <Table<ITenant> columns={columns} dataSource={data} rowKey={'tenant_id'} loading={loading} pagination={false} /> ); }; export default TenantTable;