import { StackActions, useNavigation } from '@react-navigation/native' import { ConversationResource } from '../../types' import { useMessageAvailableMembers } from './use_message_available_members' export function useMessageAvailableMembersAction(conversation: ConversationResource) { const navigation = useNavigation() const isDmDisabled = !!conversation.disabled && conversation.disabledReason === 'direct_messages_disabled' const messageAvailableMembersLink = useMessageAvailableMembers(conversation, { enabled: isDmDisabled, }) if (!messageAvailableMembersLink) return undefined return { label: messageAvailableMembersLink.label, onPress: () => { if ('existingConversationId' in messageAvailableMembersLink) { // replace instead of navigate/push so the disabled conversation isn't // left in the back stack as a dead end navigation.dispatch( StackActions.replace('Conversation', { conversation_id: messageAvailableMembersLink.existingConversationId, }) ) } else { navigation.navigate('New', { screen: 'ConversationSelectDirectMessageRecipients', params: { preselected_people: messageAvailableMembersLink.recipients }, }) } }, } }