import Button from '@components/Button' import GracefullyImage from '@components/GracefullyImage' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' import { connectMedia } from '@utils/api/helpers/connect' import { useAccountStorage, useGlobalStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' import { Platform } from 'expo-modules-core' import * as ScreenOrientation from 'expo-screen-orientation' import React, { useRef, useState } from 'react' import { Pressable, View } from 'react-native' import AttachmentAltText from './AltText' import { aspectRatio } from './dimensions' export interface Props { total: number index: number sensitiveShown: boolean video: Mastodon.AttachmentVideo | Mastodon.AttachmentGifv gifv?: boolean } const AttachmentVideo: React.FC = ({ total, index, sensitiveShown, video, gifv = false }) => { const { reduceMotionEnabled } = useAccessibility() const [autoplayGifv] = useGlobalStorage.boolean('app.auto_play_gifv') const [preferences] = useAccountStorage.object('preferences') const shouldAutoplayGifv = preferences?.['reading:autoplay:gifs'] !== undefined ? preferences['reading:autoplay:gifs'] : autoplayGifv const videoPlayer = useRef