diff --git a/src/components/dms/ConvoMenu.tsx b/src/components/dms/ConvoMenu.tsx index 29b6aeab1a..f44692a2e3 100644 --- a/src/components/dms/ConvoMenu.tsx +++ b/src/components/dms/ConvoMenu.tsx @@ -38,7 +38,7 @@ import {Bubble_Stroke2_Corner2_Rounded as Bubble} from '../icons/Bubble' import {ReportDialog} from './ReportDialog' let ConvoMenu = ({ - convo: initialConvo, + convo, profile, control, currentScreen, @@ -61,12 +61,105 @@ let ConvoMenu = ({ latestReportableMessage?: ChatBskyConvoDefs.MessageView style?: ViewStyleProp['style'] }): React.ReactNode => { - const navigation = useNavigation() const {_} = useLingui() const t = useTheme() + const leaveConvoControl = Prompt.usePromptControl() const reportControl = Prompt.usePromptControl() const blockedByListControl = Prompt.usePromptControl() + + const {listBlocks} = blockInfo + + return ( + <> + + {!hideTrigger && ( + + + {({props, state}) => ( + { + Keyboard.dismiss() + props.onPress() + }} + style={[ + a.p_sm, + a.rounded_full, + (state.hovered || state.pressed) && t.atoms.bg_contrast_25, + // make sure pfp is in the middle + {marginLeft: -10}, + ]}> + + + )} + + + )} + + + + + + + + {latestReportableMessage ? ( + + ) : ( + + )} + + + + ) +} +ConvoMenu = React.memo(ConvoMenu) + +function MenuContent({ + convo: initialConvo, + profile, + showMarkAsRead, + blockInfo, + leaveConvoControl, + reportControl, + blockedByListControl, +}: { + convo: ChatBskyConvoDefs.ConvoView + profile: Shadow + showMarkAsRead?: boolean + blockInfo: { + listBlocks: ModerationCause[] + userBlock?: ModerationCause + } + leaveConvoControl: Prompt.PromptControlProps + reportControl: Prompt.PromptControlProps + blockedByListControl: Prompt.PromptControlProps +}) { + const navigation = useNavigation() + const {_} = useLingui() const {mutate: markAsRead} = useMarkAsReadMutation() const {listBlocks, userBlock} = blockInfo @@ -108,141 +201,81 @@ let ConvoMenu = ({ } }, [userBlock, listBlocks, blockedByListControl, queueBlock, queueUnblock]) - return ( + return isDeletedAccount ? ( + leaveConvoControl.open()}> + + Leave conversation + + + + ) : ( <> - - {!hideTrigger && ( - - - {({props, state}) => ( - { - Keyboard.dismiss() - - props.onPress() - }} - style={[ - a.p_sm, - a.rounded_full, - (state.hovered || state.pressed) && t.atoms.bg_contrast_25, - // make sure pfp is in the middle - {marginLeft: -10}, - ]}> - - - )} - - + + {showMarkAsRead && ( + markAsRead({convoId})}> + + Mark as read + + + )} - - {isDeletedAccount ? ( - - leaveConvoControl.open()}> - - Leave conversation - - - - - ) : ( - - - {showMarkAsRead && ( - markAsRead({convoId})}> - - Mark as read - - - - )} - - - Go to profile - - - - muteConvo({mute: !convo?.muted})}> - - {convo?.muted ? ( - Unmute conversation - ) : ( - Mute conversation - )} - - - - - - - - - {isBlocking ? _(msg`Unblock account`) : _(msg`Block account`)} - - - - reportControl.open()}> - - Report conversation - - - - - - - leaveConvoControl.open()}> - - Leave conversation - - - - - - )} - - - - {latestReportableMessage ? ( - - ) : ( - - )} - - + + + Go to profile + + + + muteConvo({mute: !convo?.muted})}> + + {convo?.muted ? ( + Unmute conversation + ) : ( + Mute conversation + )} + + + + + + + + + {isBlocking ? _(msg`Unblock account`) : _(msg`Block account`)} + + + + reportControl.open()}> + + Report conversation + + + + + + + leaveConvoControl.open()}> + + Leave conversation + + + + ) } -ConvoMenu = React.memo(ConvoMenu) export {ConvoMenu}