import { t } from "@lingui/core/macro"; import { useModal } from "~/providers/modal"; import { api } from "~/utils/api"; import { formatMemberDisplayName, getAvatarUrl } from "~/utils/helpers"; import Avatar from "~/components/Avatar"; import MemberSelector from "~/views/card/components/MemberSelector"; export function CardContextMembersModal() { const { entityId: cardPublicId, closeModal } = useModal(); const { data: card, isLoading } = api.card.byId.useQuery( { cardPublicId: cardPublicId ?? "" }, { enabled: !!cardPublicId && cardPublicId.length >= 12 }, ); const board = card?.list?.board; const workspaceMembers = board?.workspace?.members ?? []; const selectedMembers = card?.members ?? []; const formattedMembers = workspaceMembers.map((member) => { const isSelected = selectedMembers.some( (m) => m.publicId === member.publicId, ); return { key: member.publicId, value: formatMemberDisplayName( member.user?.name ?? null, member.user?.email ?? member.email, ), imageUrl: member.user?.image ? getAvatarUrl(member.user.image) : undefined, selected: isSelected, leftIcon: ( ), }; }); if (!cardPublicId) return null; return (

{t`Manage members`}

{isLoading ? (
) : ( )}
); }