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)} > -