import type { MediaItem } from '../../../../../packages/api-contracts/src/index.js'; import { Link } from 'react-router-dom'; import { RedditUsernameLink } from '../../components/reddit-username-link.js'; import { createOwnedConversationId } from '../conversations/conversation-identity.js'; import { mediaAlt, mediaConversation, mediaType } from './filters.js'; import { AccountOwnerBadge } from '../../components/account-owner-badge.js'; interface MediaCardProps { item: MediaItem; isRevealed: boolean; onToggleReveal(): void; onOpenPreview(): void; } function formatMediaDate(timestamp: number): string { return new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' }).format(timestamp); } export function MediaCard({ item, isRevealed, onToggleReveal, onOpenPreview }: MediaCardProps) { const conversationId = item.chatRoomId ?? item.chatUsername; const conversationPath = conversationId ? `/conversations/${encodeURIComponent(createOwnedConversationId(item.owner?.accountId, conversationId))}` : null; return (
{!isRevealed ? Private media hidden : null}
From Conversation {item.chatUsername ? : mediaConversation(item)}
Type
{mediaType(item) === 'gif' ? 'GIF' : 'Image'}
Received
{formatMediaDate(item.timestamp)}
{conversationPath ? ( Open conversation ) : null}
); }