import React, {useEffect, useState} from 'react'; import {StyleSheet, View, Image, Text} from 'react-native'; import {Button} from 'react-native-elements'; import {BlurView} from '@react-native-community/blur'; import { SCREEN_HEIGHT, SCREEN_WIDTH, StatusBarHeight, getTimePosted, } from '../../utils'; import {UserType, CommentType} from '../../types'; import {RouteProp} from '@react-navigation/native'; import {StackNavigationProp} from '@react-navigation/stack'; import {CaptionScreenHeader} from '../../components'; import {AuthContext} from '../../routes/authentication'; import {ProfileStackParams} from 'src/routes/profile/ProfileStack'; import Animated from 'react-native-reanimated'; import {CommentsCount} from '../../components'; import AsyncStorage from '@react-native-community/async-storage'; import {getMomentCommentsCount} from '../../services'; const NO_USER: UserType = { userId: '', username: '', }; /** * Individual moment view opened when user clicks on a moment tile */ type IndividualMomentRouteProp = RouteProp< ProfileStackParams, 'IndividualMoment' >; type IndividualMomentNavigationProp = StackNavigationProp< ProfileStackParams, 'IndividualMoment' >; interface IndividualMomentProps { route: IndividualMomentRouteProp; navigation: IndividualMomentNavigationProp; } const IndividualMoment: React.FC = ({ route, navigation, }) => { const { moment_category, path_hash, date_time, moment_id, } = route.params.moment; const {isProfileView} = route.params; const { user: {userId}, logout, } = React.useContext(AuthContext); const [user, setUser] = useState(NO_USER); const [caption, setCaption] = React.useState(route.params.moment.caption); const [elapsedTime, setElapsedTime] = React.useState(); const [comments_count, setCommentsCount] = React.useState(''); const handleCaptionUpdate = (caption: string) => { setCaption(caption); }; useEffect(() => { if (!userId) { setUser(NO_USER); } const timePeriod = async () => { setElapsedTime(getTimePosted(date_time)); }; const loadComments = async () => { const token = await AsyncStorage.getItem('token'); if (!token) { logout(); return; } getMomentCommentsCount(moment_id, setCommentsCount, token); }; timePeriod(); loadComments(); }, [date_time, userId]); return (