import { useEffect, useRef } from 'react'; import { View, Image, Text, TouchableOpacity, Platform } from 'react-native'; import { Colors } from 'src/theme'; import MapLibreGL, { PointAnnotationRef } from '@maplibre/maplibre-react-native'; import { useNavigation } from '@react-navigation/native'; import { NAVIGATION_PAGES } from 'src/types'; import moment from 'moment'; import { styles } from '../MarkerItem/styles'; const UserItem = ({ marker }: { marker: any }) => { const calloutUserRef = useRef(null); const navigation = useNavigation(); useEffect(() => { if (Platform.OS === 'android') { calloutUserRef.current?.refresh(); } }, [marker]); const formatDateToLocalTime = (utcDate: string) => { const date = moment.utc(utcDate).local(); const now = moment(); if (now.diff(date, 'days') === 1) { return 'yesterday'; } if (now.diff(date, 'weeks') === 1) { return 'last week'; } return date.fromNow(); }; return ( <> {Platform.OS === 'ios' ? ( {marker.first_name + ' ' + marker.last_name} Last seen: {formatDateToLocalTime(marker.last_seen)} navigation.navigate( ...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId: marker.id }] as never) ) } > See profile ) : ( navigation.navigate( ...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId: marker.id }] as never) ) } selected={true} ref={calloutUserRef} > {marker.first_name + ' ' + marker.last_name} Last seen: {formatDateToLocalTime(marker.last_seen)} navigation.navigate( ...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId: marker.id }] as never) ) } > See profile )} ); }; export default UserItem;