import React from 'react' import {View} from 'react-native' import {ChatBskyConvoDefs} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' import {NavigationProp} from '#/lib/routes/types' import {isNative} from '#/platform/detection' import {useSession} from '#/state/session' import {TimeElapsed} from '#/view/com/util/TimeElapsed' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' import {Button} from '#/components/Button' import {ConvoMenu} from '#/components/dms/ConvoMenu' import {Bell2Off_Filled_Corner0_Rounded as BellStroke} from '#/components/icons/Bell2' import {useMenuControl} from '#/components/Menu' import {Text} from '#/components/Typography' export function ChatListItem({ convo, index, }: { convo: ChatBskyConvoDefs.ConvoView index: number }) { const t = useTheme() const {_} = useLingui() const {currentAccount} = useSession() const menuControl = useMenuControl() const {gtMobile} = useBreakpoints() let lastMessage = _(msg`No messages yet`) let lastMessageSentAt: string | null = null if (ChatBskyConvoDefs.isMessageView(convo.lastMessage)) { if (convo.lastMessage.sender?.did === currentAccount?.did) { lastMessage = _(msg`You: ${convo.lastMessage.text}`) } else { lastMessage = convo.lastMessage.text } lastMessageSentAt = convo.lastMessage.sentAt } if (ChatBskyConvoDefs.isDeletedMessageView(convo.lastMessage)) { lastMessage = _(msg`Message deleted`) } const otherUser = convo.members.find( member => member.did !== currentAccount?.did, ) const navigation = useNavigation() const [showActions, setShowActions] = React.useState(false) const onMouseEnter = React.useCallback(() => { setShowActions(true) }, []) const onMouseLeave = React.useCallback(() => { setShowActions(false) }, []) const onFocus = React.useCallback(e => { if (e.nativeEvent.relatedTarget == null) return setShowActions(true) }, []) const onPress = React.useCallback(() => { navigation.push('MessagesConversation', { conversation: convo.id, }) }, [convo.id, navigation]) if (!otherUser) { return null } return ( ) }