about summary refs log tree commit diff
path: root/src/components/dms/MessageMenu.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/dms/MessageMenu.tsx')
-rw-r--r--src/components/dms/MessageMenu.tsx25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/components/dms/MessageMenu.tsx b/src/components/dms/MessageMenu.tsx
index a21324204..1e1733609 100644
--- a/src/components/dms/MessageMenu.tsx
+++ b/src/components/dms/MessageMenu.tsx
@@ -1,10 +1,12 @@
 import React from 'react'
 import {Pressable, View} from 'react-native'
+import * as Clipboard from 'expo-clipboard'
 import {ChatBskyConvoDefs} from '@atproto-labs/api'
 import {msg} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
 
 import {useSession} from 'state/session'
+import * as Toast from '#/view/com/util/Toast'
 import {atoms as a, useTheme} from '#/alf'
 import {DotGrid_Stroke2_Corner0_Rounded as DotsHorizontal} from '#/components/icons/DotGrid'
 import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash'
@@ -12,6 +14,7 @@ import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/War
 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'
 
 export let MessageMenu = ({
   message,
@@ -32,6 +35,14 @@ export let MessageMenu = ({
 
   const isFromSelf = message.sender?.did === currentAccount?.did
 
+  const onCopyPostText = React.useCallback(() => {
+    // use when we have rich text
+    // const str = richTextToString(richText, true)
+
+    Clipboard.setStringAsync(message.text)
+    Toast.show(_(msg`Copied to clipboard`))
+  }, [_, message.text])
+
   const onDelete = React.useCallback(() => {
     // TODO delete the message
   }, [])
@@ -64,10 +75,20 @@ export let MessageMenu = ({
         <Menu.Outer>
           <Menu.Group>
             <Menu.Item
+              testID="messageDropdownCopyBtn"
+              label={_(msg`Copy message text`)}
+              onPress={onCopyPostText}>
+              <Menu.ItemText>{_(msg`Copy message text`)}</Menu.ItemText>
+              <Menu.ItemIcon icon={ClipboardIcon} position="right" />
+            </Menu.Item>
+          </Menu.Group>
+          <Menu.Divider />
+          <Menu.Group>
+            <Menu.Item
               testID="messageDropdownDeleteBtn"
-              label={_(msg`Delete message`)}
+              label={_(msg`Delete message for me`)}
               onPress={deleteControl.open}>
-              <Menu.ItemText>{_(msg`Delete`)}</Menu.ItemText>
+              <Menu.ItemText>{_(msg`Delete for me`)}</Menu.ItemText>
               <Menu.ItemIcon icon={Trash} position="right" />
             </Menu.Item>
             {!isFromSelf && (