Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions components/waves/drops/WaveDropActionsAddReaction.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -148,6 +158,14 @@ const WaveDropActionsAddReaction: React.FC<{
}
};

useEffect(() => {
if (!isMobile || externalOpenSignal === undefined) {
return;
}

setShowPicker(true);
}, [externalOpenSignal, isMobile]);
Comment thread
prxt6529 marked this conversation as resolved.

useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
const target = event.target as Node;
Expand Down Expand Up @@ -181,6 +199,12 @@ const WaveDropActionsAddReaction: React.FC<{

const onReact = () => {
if (!canReact) return;

if (isMobile && !showPicker && onOpenPicker) {
onOpenPicker?.();
return;
}

setShowPicker(!showPicker);
};

Expand Down Expand Up @@ -271,7 +295,7 @@ const WaveDropActionsAddReaction: React.FC<{

return (
<>
{isMobile ? mobileContent : desktopContent}
{!hideTrigger && (isMobile ? mobileContent : desktopContent)}
Comment thread
prxt6529 marked this conversation as resolved.
{/* Desktop Picker */}
{!isMobile &&
showPicker &&
Expand Down Expand Up @@ -300,7 +324,7 @@ const WaveDropActionsAddReaction: React.FC<{
isOpen={showPicker}
onClose={() => setShowPicker(false)}
>
<div className="tw-flex tw-size-full tw-items-center tw-justify-center">
<div className="tw-flex tw-size-full tw-justify-center tw-overflow-y-auto">
<Picker
theme="dark"
data={data}
Expand Down
43 changes: 30 additions & 13 deletions components/waves/drops/WaveDropMobileMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ const WaveDropMobileMenu: FC<WaveDropMobileMenuProps> = ({
);

const [copied, setCopied] = useState(false);
const [emojiPickerOpenSignal, setEmojiPickerOpenSignal] = useState(0);

const copyToClipboard = () => {
if (longPressTriggered) return;
Expand Down Expand Up @@ -141,25 +142,32 @@ const WaveDropMobileMenu: FC<WaveDropMobileMenuProps> = ({

const closeMenu = () => setOpen(false);

const openEmojiPicker = () => {
setOpen(false);
setEmojiPickerOpenSignal((current) => current + 1);
};

return createPortal(
<CommonDropdownItemsMobileWrapper isOpen={isOpen} setOpen={setOpen}>
<div
className={`tw-grid tw-grid-cols-1 tw-gap-y-2 ${
longPressTriggered && "tw-select-none"
}`}
>
<>
<CommonDropdownItemsMobileWrapper isOpen={isOpen} setOpen={setOpen}>
<div
className={`tw-grid tw-grid-cols-1 tw-gap-y-2 ${
longPressTriggered && "tw-select-none"
}`}
>
{showOptions && (
<WaveDropActionsToggleLinkPreview
drop={extendedDrop}
isMobile={true}
onToggle={closeMenu}
/>
)}
<WaveDropActionsAddReaction
drop={extendedDrop}
isMobile={true}
onAddReaction={onAddReaction}
/>
<WaveDropActionsAddReaction
drop={extendedDrop}
isMobile={true}
onOpenPicker={openEmojiPicker}
onAddReaction={onAddReaction}
/>
{showReplyAndQuote && (
<>
<button
Expand Down Expand Up @@ -307,8 +315,17 @@ const WaveDropMobileMenu: FC<WaveDropMobileMenuProps> = ({
{showOptions && (
<WaveDropMobileMenuDelete drop={drop} onDropDeleted={closeMenu} />
)}
</div>
</CommonDropdownItemsMobileWrapper>,
</div>
</CommonDropdownItemsMobileWrapper>

<WaveDropActionsAddReaction
drop={extendedDrop}
isMobile={true}
hideTrigger={true}
externalOpenSignal={emojiPickerOpenSignal}
onAddReaction={onAddReaction}
/>
</>,
document.body
);
};
Expand Down