import {RouteProp} from '@react-navigation/core'; import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useRef, useState} from 'react'; import {Image, StyleSheet, TouchableWithoutFeedback, View} from 'react-native'; import {Button} from 'react-native-elements'; import Video from 'react-native-video'; import {MainStackParams} from 'src/routes'; import { CaptionScreenHeader, MomentTags, SearchBackground, } from '../../components'; import {TagFriendsFooter} from '../../components/moments'; import {TAGG_LIGHT_BLUE_2} from '../../constants'; import {MomentTagType} from '../../types'; import {SCREEN_WIDTH, StatusBarHeight} from '../../utils'; type TagFriendsScreenRouteProps = RouteProp< MainStackParams, 'TagFriendsScreen' >; interface TagFriendsScreenProps { route: TagFriendsScreenRouteProps; } const TagFriendsScreen: React.FC = ({route}) => { const {media, selectedTags} = route.params; const navigation = useNavigation(); const imageRef = useRef(null); const [tags, setTags] = useState([]); const [imageWidth, setImageWidth] = useState(0); const [imageHeight, setImageHeight] = useState(0); /* * Update list of tagged users from route params */ useEffect(() => { setTags(selectedTags ? selectedTags : []); }, [selectedTags]); /* * Navigate back to Tag Users Screen, send selected users */ const handleDone = () => { navigation.navigate('CaptionScreen', { ...route.params, selectedTags: tags, }); }; const setMediaDimensions = (width: number, height: number) => { const imageAspectRatio = width / height; // aspectRatio: >= 1 [Landscape] [1:1] if (imageAspectRatio >= 1) { setImageWidth(SCREEN_WIDTH); setImageHeight(SCREEN_WIDTH / imageAspectRatio); } // aspectRatio: < 1 [Portrait] if (imageAspectRatio < 1) { setImageHeight(SCREEN_WIDTH); setImageWidth(SCREEN_WIDTH * imageAspectRatio); } }; /* * Calculating image width and height with respect to it's enclosing view's dimensions. Only works for images. */ useEffect(() => { if (imageRef && imageRef.current && !media.isVideo) { Image.getSize( media.uri, (w, h) => { setMediaDimensions(w, h); }, (err) => console.log(err), ); } }, []); return (