import React, { useCallback, useMemo } from 'react'; import { getAllGroupInviteCode, t, GroupInvite as GroupInviteType, datetimeFromNow, formatFullTime, deleteGroupInvite, useAsyncRefresh, } from 'tailchat-shared'; import { Button, Table, Tooltip } from 'antd'; import type { ColumnType } from 'antd/lib/table'; import { UserName } from '@/components/UserName'; import { openModal, openReconfirmModalP } from '@/components/Modal'; import { CreateGroupInvite } from '../CreateGroupInvite'; import { LoadingOnFirst } from '@/components/LoadingOnFirst'; export const GroupInvite: React.FC<{ groupId: string; }> = React.memo((props) => { const groupId = props.groupId; const { loading, value, refresh } = useAsyncRefresh(async () => { const list = await getAllGroupInviteCode(groupId); return list.reverse(); // 倒序返回 }, [groupId]); const handleCreateInvite = useCallback(() => { openModal( { refresh(); }} /> ); }, [groupId, refresh]); const handleDeleteInvite = useCallback( async (inviteId: string) => { if (await openReconfirmModalP()) { await deleteGroupInvite(groupId, inviteId); await refresh(); } }, [groupId, refresh] ); const columns: ColumnType[] = useMemo( () => [ { title: t('邀请码'), dataIndex: 'code', }, { title: t('创建时间'), dataIndex: 'createdAt', render: (date) => ( {datetimeFromNow(date)} ), }, { title: t('过期时间'), dataIndex: 'expiredAt', render: (date) => { if (!date) { return t('永不过期'); } return ( {datetimeFromNow(date)} ); }, }, { title: t('创建者'), dataIndex: 'creator', render: (userId) => , }, { title: t('操作'), dataIndex: '_id', render: (id: string) => { return (
); }, }, ], [handleDeleteInvite] ); return (
); }); GroupInvite.displayName = 'GroupInvite';