diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-05-10 17:52:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-10 17:52:21 +0100 |
commit | ab21aafc281c04c223828b3a2436b02a98115bc7 (patch) | |
tree | 1035caa15b2b01f77297992d7e9dd093964c6218 /src/components/dms/MessageMenu.tsx | |
parent | 7370bebf072c345c8e25974a694595f32f1bb4ca (diff) | |
download | voidsky-ab21aafc281c04c223828b3a2436b02a98115bc7.tar.zst |
[🐴] Report message dialog (#3941)
* message report dialog * report chat prompt * typo * 100% height sheet on android * messages-specific report options * restore unwanted sexual content * chat -> conversation
Diffstat (limited to 'src/components/dms/MessageMenu.tsx')
-rw-r--r-- | src/components/dms/MessageMenu.tsx | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/components/dms/MessageMenu.tsx b/src/components/dms/MessageMenu.tsx index 75807f818..c6abd5110 100644 --- a/src/components/dms/MessageMenu.tsx +++ b/src/components/dms/MessageMenu.tsx @@ -1,10 +1,12 @@ import React from 'react' import {LayoutAnimation, Pressable, View} from 'react-native' import * as Clipboard from 'expo-clipboard' +import {RichText} from '@atproto/api' import {ChatBskyConvoDefs} from '@atproto-labs/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {richTextToString} from '#/lib/strings/rich-text-helpers' import {isWeb} from 'platform/detection' import {useConvo} from 'state/messages/convo' import {ConvoStatus} from 'state/messages/convo/types' @@ -18,6 +20,7 @@ import * as Menu from '#/components/Menu' import * as Prompt from '#/components/Prompt' import {usePromptControl} from '#/components/Prompt' import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '../icons/Clipboard' +import {MessageReportDialog} from './MessageReportDialog' export let MessageMenu = ({ message, @@ -35,16 +38,22 @@ export let MessageMenu = ({ const convo = useConvo() const deleteControl = usePromptControl() const retryDeleteControl = usePromptControl() + const reportControl = usePromptControl() const isFromSelf = message.sender?.did === currentAccount?.did const onCopyPostText = React.useCallback(() => { - // use when we have rich text - // const str = richTextToString(richText, true) + const str = richTextToString( + new RichText({ + text: message.text, + facets: message.facets, + }), + true, + ) - Clipboard.setStringAsync(message.text) + Clipboard.setStringAsync(str) Toast.show(_(msg`Copied to clipboard`)) - }, [_, message.text]) + }, [_, message.text, message.facets]) const onDelete = React.useCallback(() => { if (convo.status !== ConvoStatus.Ready) return @@ -56,10 +65,6 @@ export let MessageMenu = ({ .catch(() => retryDeleteControl.open()) }, [_, convo, message.id, retryDeleteControl]) - const onReport = React.useCallback(() => { - // TODO report the message - }, []) - return ( <> <Menu.Root control={control}> @@ -104,7 +109,7 @@ export let MessageMenu = ({ <Menu.Item testID="messageDropdownReportBtn" label={_(msg`Report message`)} - onPress={onReport}> + onPress={reportControl.open}> <Menu.ItemText>{_(msg`Report`)}</Menu.ItemText> <Menu.ItemIcon icon={Warning} position="right" /> </Menu.Item> @@ -113,6 +118,8 @@ export let MessageMenu = ({ </Menu.Outer> </Menu.Root> + <MessageReportDialog message={message} control={reportControl} /> + <Prompt.Basic control={deleteControl} title={_(msg`Delete message`)} |