diff --git a/src/screens/Messages/Conversation.tsx b/src/screens/Messages/Conversation.tsx index 1e2f4037a8..aa8a052d7c 100644 --- a/src/screens/Messages/Conversation.tsx +++ b/src/screens/Messages/Conversation.tsx @@ -49,6 +49,7 @@ import {ChatDisabled} from './components/ChatDisabled' import {ChatEnded} from './components/ChatEnded' import {ChatLocked} from './components/ChatLocked' import {RequestStatus} from './components/RequestStatus' +import {GroupOwnerChatDisabled} from './components/GroupOwnerChatDisabled' type Props = NativeStackScreenProps< CommonNavigatorParams, @@ -250,7 +251,9 @@ function InnerReady({ /> ) } else if (convo?.kind === 'group') { - if (convo.details.lockStatus === 'locked') { + if (convo.primaryMember?.chatDisabled) { + footer = + } else if (convo.details.lockStatus === 'locked') { footer = } else if (convo.details.lockStatus === 'locked-permanently') { footer = diff --git a/src/screens/Messages/components/GroupOwnerChatDisabled.tsx b/src/screens/Messages/components/GroupOwnerChatDisabled.tsx new file mode 100644 index 0000000000..fe25be916b --- /dev/null +++ b/src/screens/Messages/components/GroupOwnerChatDisabled.tsx @@ -0,0 +1,71 @@ +import {Pressable} from 'react-native' +import {Trans, useLingui} from '@lingui/react/macro' +import {StackActions, useNavigation} from '@react-navigation/native' + +import {HITSLOP_10} from '#/lib/constants' +import {type NavigationProp} from '#/lib/routes/types' +import {logger} from '#/logger' +import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' +import {atoms as a, useTheme} from '#/alf' +import {type ConvoWithDetails} from '#/components/dms/util' +import {Warning_Stroke2_Corner0_Rounded as WarningIcon} from '#/components/icons/Warning' +import * as Prompt from '#/components/Prompt' +import * as Toast from '#/components/Toast' +import {Text} from '#/components/Typography' +import {LeaveChatPrompt} from '../ConversationSettings/prompts' +import {ChatFooter} from './ChatFooter' + +export function GroupOwnerChatDisabled({ + convo, +}: { + convo: Extract +}) { + const t = useTheme() + const {t: l} = useLingui() + + const leaveChatPrompt = Prompt.usePromptControl() + const navigation = useNavigation() + + const {mutate: leaveConvo} = useLeaveConvo(convo.view.id, { + onSuccess: () => { + navigation.dispatch(StackActions.pop(2)) + }, + onError: e => { + logger.error('Failed to leave group chat', {message: e}) + Toast.show(l({message: 'Failed to leave group chat', context: 'toast'}), { + type: 'error', + }) + }, + }) + + return ( + + + + Leave chat + + + + + ) +}