diff --git a/components/waves/drops/WaveDropActionsAddReaction.tsx b/components/waves/drops/WaveDropActionsAddReaction.tsx index 9cfbc990a1..b54dea88bb 100644 --- a/components/waves/drops/WaveDropActionsAddReaction.tsx +++ b/components/waves/drops/WaveDropActionsAddReaction.tsx @@ -25,8 +25,18 @@ import { const WaveDropActionsAddReaction: React.FC<{ readonly drop: ExtendedDrop; readonly isMobile?: boolean | undefined; + readonly onOpenPicker?: (() => void) | undefined; + readonly externalOpenSignal?: number | undefined; + readonly hideTrigger?: boolean | undefined; readonly onAddReaction?: (() => void) | undefined; -}> = ({ drop, isMobile = false, onAddReaction }) => { +}> = ({ + drop, + isMobile = false, + onOpenPicker, + externalOpenSignal, + hideTrigger = false, + onAddReaction, +}) => { const isTemporaryDrop = drop.id.startsWith("temp-"); const canReact = !isTemporaryDrop; const [showPicker, setShowPicker] = useState(false); @@ -148,6 +158,14 @@ const WaveDropActionsAddReaction: React.FC<{ } }; + useEffect(() => { + if (!isMobile || externalOpenSignal === undefined) { + return; + } + + setShowPicker(true); + }, [externalOpenSignal, isMobile]); + useEffect(() => { const handleClickOutside = (event: MouseEvent) => { const target = event.target as Node; @@ -181,6 +199,12 @@ const WaveDropActionsAddReaction: React.FC<{ const onReact = () => { if (!canReact) return; + + if (isMobile && !showPicker && onOpenPicker) { + onOpenPicker?.(); + return; + } + setShowPicker(!showPicker); }; @@ -271,7 +295,7 @@ const WaveDropActionsAddReaction: React.FC<{ return ( <> - {isMobile ? mobileContent : desktopContent} + {!hideTrigger && (isMobile ? mobileContent : desktopContent)} {/* Desktop Picker */} {!isMobile && showPicker && @@ -300,7 +324,7 @@ const WaveDropActionsAddReaction: React.FC<{ isOpen={showPicker} onClose={() => setShowPicker(false)} > -
+
= ({ ); const [copied, setCopied] = useState(false); + const [emojiPickerOpenSignal, setEmojiPickerOpenSignal] = useState(0); const copyToClipboard = () => { if (longPressTriggered) return; @@ -141,13 +142,19 @@ const WaveDropMobileMenu: FC = ({ const closeMenu = () => setOpen(false); + const openEmojiPicker = () => { + setOpen(false); + setEmojiPickerOpenSignal((current) => current + 1); + }; + return createPortal( - -
+ <> + +
{showOptions && ( = ({ onToggle={closeMenu} /> )} - + {showReplyAndQuote && ( <>
-
, +
+
+ + + , document.body ); };