import React, { useState, useRef, useEffect, useCallback } from 'react'; import { createPortal } from 'react-dom'; import type { MessageWithUser, Embed, User } from '@backspace/shared'; import { MarkdownRenderer } from './MarkdownRenderer'; import { MentionBadge } from './MentionBadge'; import { Avatar } from '../ui/Avatar'; import { useContextMenuStore } from '../../stores/contextMenuStore'; import { buildMessageMenuItems } from './messageMenuItems'; import { useAuthStore } from '../../stores/authStore'; import { useChatStore } from '../../stores/chatStore'; import { useSpaceStore } from '../../stores/spaceStore'; import { useUIStore } from '../../stores/uiStore'; import { AttachmentRenderer, attUrlOf } from './AttachmentRenderer'; import { AttachmentProgress } from './AttachmentProgress'; import { EmbedRenderer } from './EmbedRenderer'; import { Username } from '../ui/Username'; import { EmojiPicker } from './EmojiPicker'; import { hasPermissionBit, PermissionBits } from '../../utils/permissions'; import { isDeletedPartnerDm } from '../../utils/dmFormatters'; import { isSelf, resolveDisplayIdentity } from '../../utils/identity'; import { useCanonicalUserView } from '../../utils/userViewLookup'; import { isPendingMessage, usePendingMessageStore, type PendingMessageView, type PendingAttachmentView, } from '../../stores/pendingMessageStore'; import { useTransferStore } from '../../stores/transferStore'; interface MessageProps { message: MessageWithUser | PendingMessageView; isCompact: boolean; isFirstInGroup: boolean; previousMessageId: string | null; } interface PendingAttachmentTileProps { transferId: string; } function PendingAttachmentTile({ transferId }: PendingAttachmentTileProps) { const transfer = useTransferStore((s) => s.transfers.get(transferId)); const pauseUpload = useTransferStore((s) => s.pauseUpload); const resumeUpload = useTransferStore((s) => s.resumeUpload); const abortUpload = useTransferStore((s) => s.abortUpload); if (!transfer) { return
; } return (