import React from 'react'; import {Fragment, useContext} from 'react'; import {useStore} from 'react-redux'; import {ChatContext} from '../../App'; import {RootState} from '../../store/rootReducer'; import {FriendshipStatusType} from '../../types'; import {createChannel} from '../../utils'; import {Alert, StyleProp, TextStyle, ViewStyle} from 'react-native'; import {BasicButton} from '../common'; import {useNavigation} from '@react-navigation/native'; import {ERROR_UNABLE_CONNECT_CHAT} from '../../constants/strings'; interface MessageButtonProps { userXId: string; isBlocked: boolean; friendship_status: FriendshipStatusType; friendship_requester_id?: string; solid?: boolean; externalStyles?: Record>; } const MessageButton: React.FC = ({ userXId, isBlocked, friendship_status, friendship_requester_id, solid, externalStyles, }) => { const navigation = useNavigation(); const {chatClient, setChannel} = useContext(ChatContext); const state: RootState = useStore().getState(); const loggedInUserId = state.user.user.userId; const canMessage = () => { if ( userXId && !isBlocked && (friendship_status === 'no_record' || friendship_status === 'friends' || (friendship_status === 'requested' && friendship_requester_id === loggedInUserId)) ) { return true; } else { return false; } }; const onPressMessage = async () => { if (chatClient.user && userXId) { const channel = await createChannel(loggedInUserId, userXId, chatClient); setChannel(channel); navigation.navigate('Chat'); } else { Alert.alert(ERROR_UNABLE_CONNECT_CHAT); } }; return canMessage() ? ( ) : ( ); }; export default MessageButton;