import { ModalBody, Table, TableContainer, Tbody, Th, Thead, Tr, Td, Box, Flex } from '@chakra-ui/react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import React from 'react'; import { useContextSelector } from 'use-context-selector'; import PermissionSelect from './PermissionSelect'; import PermissionTags from './PermissionTags'; import Avatar from '@fastgpt/web/components/common/Avatar'; import { CollaboratorContext } from './context'; import MyIcon from '@fastgpt/web/components/common/Icon'; import { useRequest, useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { PermissionValueType } from '@fastgpt/global/support/permission/type'; import { useUserStore } from '@/web/support/user/useUserStore'; import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; import Loading from '@fastgpt/web/components/common/MyLoading'; import { useTranslation } from 'next-i18next'; export type ManageModalProps = { onClose: () => void; }; function ManageModal({ onClose }: ManageModalProps) { const { t } = useTranslation(); const { userInfo } = useUserStore(); const { permission, collaboratorList, onUpdateCollaborators, onDelOneCollaborator } = useContextSelector(CollaboratorContext, (v) => v); const { runAsync: onDelete, loading: isDeleting } = useRequest2((tmbId: string) => onDelOneCollaborator(tmbId) ); const { mutate: onUpdate, isLoading: isUpdating } = useRequest({ mutationFn: ({ tmbId, per }: { tmbId: string; per: PermissionValueType }) => { return onUpdateCollaborators({ tmbIds: [tmbId], permission: per }); }, successToast: t('common.Update Success'), errorToast: 'Error' }); const loading = isDeleting || isUpdating; return ( {collaboratorList?.map((item) => { return ( ); })}
{t('user:name')} {t('user:permissions')} {t('user:operations')}
{item.name} {/* Not self; Not owner and other manager */} {item.tmbId !== userInfo?.team?.tmbId && (permission.isOwner || !item.permission.hasManagePer) && ( } value={item.permission.value} onChange={(per) => { onUpdate({ tmbId: item.tmbId, per }); }} onDelete={() => { onDelete(item.tmbId); }} /> )}
{collaboratorList?.length === 0 && }
{loading && }
); } export default ManageModal;