···1import React from 'react'
2import {LayoutAnimation} from 'react-native'
3import * as Clipboard from 'expo-clipboard'
4-import {ChatBskyConvoDefs, RichText} from '@atproto/api'
5import {msg} from '@lingui/macro'
6import {useLingui} from '@lingui/react'
78import {useOpenLink} from '#/lib/hooks/useOpenLink'
9import {richTextToString} from '#/lib/strings/rich-text-helpers'
10import {getTranslatorLink} from '#/locale/helpers'
011import {useConvoActive} from '#/state/messages/convo'
12import {useLanguagePrefs} from '#/state/preferences'
13import {useSession} from '#/state/session'
14import * as Toast from '#/view/com/util/Toast'
15import * as ContextMenu from '#/components/ContextMenu'
16-import {TriggerProps} from '#/components/ContextMenu/types'
17import {ReportDialog} from '#/components/dms/ReportDialog'
18import {BubbleQuestion_Stroke2_Corner0_Rounded as Translate} from '#/components/icons/Bubble'
19import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '#/components/icons/Clipboard'
···21import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning'
22import * as Prompt from '#/components/Prompt'
23import {usePromptControl} from '#/components/Prompt'
02425export let MessageContextMenu = ({
26 message,
···77 return (
78 <>
79 <ContextMenu.Root>
00000080 <ContextMenu.Trigger
81 label={_(msg`Message options`)}
82 contentLabel={_(
···1import React from 'react'
2import {LayoutAnimation} from 'react-native'
3import * as Clipboard from 'expo-clipboard'
4+import {type ChatBskyConvoDefs, RichText} from '@atproto/api'
5import {msg} from '@lingui/macro'
6import {useLingui} from '@lingui/react'
78import {useOpenLink} from '#/lib/hooks/useOpenLink'
9import {richTextToString} from '#/lib/strings/rich-text-helpers'
10import {getTranslatorLink} from '#/locale/helpers'
11+import {isNative} from '#/platform/detection'
12import {useConvoActive} from '#/state/messages/convo'
13import {useLanguagePrefs} from '#/state/preferences'
14import {useSession} from '#/state/session'
15import * as Toast from '#/view/com/util/Toast'
16import * as ContextMenu from '#/components/ContextMenu'
17+import {type TriggerProps} from '#/components/ContextMenu/types'
18import {ReportDialog} from '#/components/dms/ReportDialog'
19import {BubbleQuestion_Stroke2_Corner0_Rounded as Translate} from '#/components/icons/Bubble'
20import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '#/components/icons/Clipboard'
···22import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning'
23import * as Prompt from '#/components/Prompt'
24import {usePromptControl} from '#/components/Prompt'
25+import {EmojiReactionPicker} from './EmojiReactionPicker'
2627export let MessageContextMenu = ({
28 message,
···79 return (
80 <>
81 <ContextMenu.Root>
82+ {isNative && (
83+ <ContextMenu.AuxiliaryView align={isFromSelf ? 'right' : 'left'}>
84+ <EmojiReactionPicker message={message} />
85+ </ContextMenu.AuxiliaryView>
86+ )}
87+88 <ContextMenu.Trigger
89 label={_(msg`Message options`)}
90 contentLabel={_(