import { StyledMemberAvatar, StyledMemberButtonContainer, StyledMemberEmail, StyledMemberInfo, StyledMemberListContainer, StyledMemberListItem, StyledMemberName, StyledMemberNameContainer, StyledMemberRoleContainer, StyledMemberTitleContainer, StyledMoreVerticalButton, StyledPublishExplanation, StyledMemberWarp, StyledMemberContainer, } from './style'; import { MoreVerticalIcon, EmailIcon, TrashIcon } from '@blocksuite/icons'; import { useState } from 'react'; import { Button, IconButton } from '@/ui/button'; import { InviteMemberModal } from './InviteMemberModal'; import { Menu, MenuItem } from '@/ui/menu'; import { Empty } from '@/ui/empty'; import { WorkspaceUnit } from '@affine/datacenter'; import { useConfirm } from '@/providers/ConfirmProvider'; import { toast } from '@/ui/toast'; import useMembers from '@/hooks/use-members'; import Loading from '@/components/loading'; import { FlexWrapper } from '@/ui/layout'; import { useTranslation } from '@affine/i18n'; import { EnableWorkspaceButton } from '@/components/enable-workspace'; export const MembersPage = ({ workspace }: { workspace: WorkspaceUnit }) => { const [isInviteModalShow, setIsInviteModalShow] = useState(false); const { members, removeMember, loaded } = useMembers(); const { t } = useTranslation(); const { confirm } = useConfirm(); if (workspace.provider === 'affine') { return ( {!loaded && ( )} {loaded && members.length === 0 && ( )} {loaded && members.length > 0 && ( <> {t('Users')} ({members.length}) {t('Access level')}
{members.map((member, index) => { const user = Object.assign( { avatar_url: '', email: '', id: '', name: '', }, member.user ); return ( {user.name} {member.user.email} {member.accepted ? member.type !== 99 ? t('Member') : t('Owner') : t('Pending')} {member.type === 99 ? ( <> ) : ( { const confirmRemove = await confirm({ title: t('Delete Member?'), content: t('will delete member'), confirmText: t('Delete'), confirmType: 'danger', }); if (!confirmRemove) { return; } await removeMember(member.id); toast( t('Member has been removed', { name: user.name, }) ); }} icon={} > {t('Delete')} } placement="bottom-end" disablePortal={true} > )} ); })} )}
{ setIsInviteModalShow(false); }} onInviteSuccess={() => { setIsInviteModalShow(false); // refreshMembers(); }} workspaceId={workspace.id} open={isInviteModalShow} >
); } return ( {t('Collaboration Description')} ); };