import {useState} from 'react'; import {AnimatePresence, m} from 'framer-motion'; import clsx from 'clsx'; import {DriveEntry, DriveEntryUser} from '../files/drive-entry'; import { getPermissionItemForUser, PermissionSelector, PermissionSelectorItem, } from './permission-selector'; import {IconButton} from '@common/ui/buttons/icon-button'; import {CloseIcon} from '@common/icons/material/Close'; import {useChangePermission} from './queries/use-change-permission'; import {useUnshareEntries} from './queries/use-unshare-entries'; import {Trans} from '@common/i18n/trans'; import {toast} from '@common/ui/toast/toast'; import {message} from '@common/i18n/message'; import {showHttpErrorToast} from '@common/utils/http/show-http-error-toast'; import {UserAvatar} from '@common/ui/images/user-avatar'; interface MemberListProps { className?: string; entry: DriveEntry; } export function MemberList({className, entry}: MemberListProps) { if (!entry) return null; const users = entry.users; return (
{users.map(user => { return ; })}
); } interface MemberListItemProps { user: DriveEntryUser; entry: DriveEntry; } function MemberListItem({user, entry}: MemberListItemProps) { return (
{user.display_name}
{user.email}
{user.owns_entry ? ( ) : ( )}
); } interface ActionButtonsProps { user: DriveEntryUser; entry: DriveEntry; } function ActionButtons({user, entry}: ActionButtonsProps) { const changePermissions = useChangePermission(); const unshareEntry = useUnshareEntries(); const [activePermission, setActivePermission] = useState(() => { return getPermissionItemForUser(user); }); return (
{ changePermissions.mutate({ userId: user.id, permissions: item.value, entryId: entry.id, }); setActivePermission(item); }} value={activePermission} /> { unshareEntry.mutate( {userId: user.id, entryIds: [entry.id]}, { onSuccess: () => { toast(message('Member removed')); }, onError: err => showHttpErrorToast(err, message('Could not remove member')), } ); }} >
); }