import * as React from 'react'; import {RouteProp, useNavigation} from '@react-navigation/native'; import {ProfileStackParams} from '../../routes/profile'; import {CenteredView, CommentTile, OverlayView} from '../../components'; import {CommentType} from '../../types'; import {ScrollView, StyleSheet, Text, View} from 'react-native'; import {SCREEN_WIDTH} from '../../utils/screenDimensions'; import {Button} from 'react-native-elements'; import {AddComment} from '../../components/'; import {useEffect} from 'react'; import AsyncStorage from '@react-native-community/async-storage'; import {AuthContext} from '../../routes/authentication'; import {getMomentComments} from '../..//services'; /** * Comments Screen for an image uploaded * Displays all comments for a particular moment uploaded by the user followed by a text area to add the comment. * Comment is posted when return is pressed on the keypad. */ type MomentCommentsScreenRouteProps = RouteProp< ProfileStackParams, 'MomentCommentsScreen' >; interface MomentCommentsScreenProps { route: MomentCommentsScreenRouteProps; } const MomentCommentsScreen: React.FC = ({route}) => { const navigation = useNavigation(); const {isProfileView, moment_id} = route.params; const [commentsList, setCommentsList] = React.useState([]); const [newCommentsAvailable, setNewCommentsAvailable] = React.useState(true); const {logout} = React.useContext(AuthContext); useEffect(() => { const loadComments = async () => { const token = await AsyncStorage.getItem('token'); if (!token) { logout(); return; } getMomentComments(moment_id, setCommentsList, token); setNewCommentsAvailable(false); }; if (newCommentsAvailable) { loadComments(); } }, [newCommentsAvailable]); return (