import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { ActivityIndicator, Image, ImageBackground, InteractionManager, StyleSheet, View, } from 'react-native'; import { TouchableWithoutFeedback } from 'react-native-gesture-handler'; import type { IMedia } from '../types/Chatty.types'; import { Video } from './Video'; interface IProps { media: IMedia; isSelected?: boolean; } export function VideoThumbnail({ media, isSelected }: IProps) { const [showVideo, setShowVideo] = useState(false); const [showThumbnail, setShowThumbnail] = useState(false); const playIcon = useMemo(() => require('../assets/icons/play.png'), []); useEffect(() => { return () => { setShowVideo(false); }; }, []); const onPressThumbnail = useCallback(() => { setShowVideo(true); }, []); useEffect(() => { InteractionManager.runAfterInteractions(() => { if (media?.videoOptions?.thumbnail) { Image.prefetch(media?.videoOptions?.thumbnail).then(() => { setShowThumbnail(true); }); } else { setShowThumbnail(true); } }); }, [media?.videoOptions?.thumbnail]); if (showVideo) { return