import { Platform, Pressable, View, type StyleProp, type ViewStyle } from "react-native"; import { cn } from "../lib/cn"; import type { DraftComposerFileAttachment } from "../lib/composerImages"; import { useMediaActions, type MediaActionsSource } from "../lib/mediaActions"; import { SymbolView } from "./AppSymbol"; import { AppText } from "./AppText"; import { MediaActionsMenu } from "./MediaActionsMenu"; import { PresentationSource } from "./NativePresentation"; import { VideoThumbnailImage } from "./VideoThumbnailImage"; export function VideoAttachmentTile(props: { readonly name: string; readonly sourceIdentifier: string; readonly thumbnailSource: string | DraftComposerFileAttachment | null; readonly actionsSource?: MediaActionsSource; readonly compact?: boolean; readonly onPress: (sourceIdentifier: string) => void; readonly disabled?: boolean; readonly className?: string; readonly style?: StyleProp; }) { const mediaActions = useMediaActions(props.disabled ? undefined : props.actionsSource); const hasActions = mediaActions.actions.length > 0; return ( { if (!props.disabled) props.onPress(props.sourceIdentifier); }} accessibilityActions={mediaActions.actions.map(({ id, title }) => ({ name: id, label: title, }))} onAccessibilityAction={({ nativeEvent }) => { if (props.disabled) return; mediaActions.actions.find(({ id }) => id === nativeEvent.actionName)?.run(); }} > props.onPress(props.sourceIdentifier)} className={cn("items-center justify-center overflow-hidden bg-black/80", props.className)} style={props.style} > {!props.compact ? ( {props.name} ) : null} ); }