import React from 'react' import {TouchableOpacity, View} from 'react-native' import {AppBskyActorDefs} from '@atproto/api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' import {NativeStackScreenProps} from '@react-navigation/native-stack' import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types' import {useGate} from '#/lib/statsig/statsig' import {BACK_HITSLOP} from 'lib/constants' import {isWeb} from 'platform/detection' import {useSession} from 'state/session' import {UserAvatar} from 'view/com/util/UserAvatar' import {CenteredView} from 'view/com/util/Views' import {MessagesList} from '#/screens/Messages/Conversation/MessagesList' import {useChatQuery} from '#/screens/Messages/Temp/query/query' import {atoms as a, useBreakpoints, useTheme} from '#/alf' import {Button, ButtonIcon} from '#/components/Button' import {DotGrid_Stroke2_Corner0_Rounded} from '#/components/icons/DotGrid' import {ListMaybePlaceholder} from '#/components/Lists' import {Text} from '#/components/Typography' import {ClipClopGate} from '../gate' type Props = NativeStackScreenProps< CommonNavigatorParams, 'MessagesConversation' > export function MessagesConversationScreen({route}: Props) { const gate = useGate() const chatId = route.params.conversation const {currentAccount} = useSession() const myDid = currentAccount?.did const {data: chat, isError: isError} = useChatQuery(chatId) const otherProfile = React.useMemo(() => { return chat?.members?.find(m => m.did !== myDid) }, [chat?.members, myDid]) if (!gate('dms')) return if (!chat || !otherProfile) { return ( ) } return (
) } function Header({profile}: {profile: AppBskyActorDefs.ProfileViewBasic}) { const t = useTheme() const {_} = useLingui() const {gtTablet} = useBreakpoints() const navigation = useNavigation() const onPressBack = React.useCallback(() => { if (isWeb) { navigation.replace('MessagesList') } else { navigation.pop() } }, [navigation]) return ( {!gtTablet ? ( ) : ( )} {profile.displayName} ) }