From 350b39de845c65891a268c8659c74f4eb000f0ef Mon Sep 17 00:00:00 2001 From: Pavel Meyer Date: Tue, 8 Oct 2024 12:07:09 +0300 Subject: [PATCH] CW-copy-link-in-2-steps Remove usage of ShareModal --- .../DiscussionFeedCard/DiscussionFeedCard.tsx | 25 ++++++------------ .../ProposalFeedCard/ProposalFeedCard.tsx | 26 +++++++------------ .../ActionsButton/ActionsButton.tsx | 23 +++++++--------- .../ElementDropdown/ElementDropdown.tsx | 3 ++- 4 files changed, 28 insertions(+), 49 deletions(-) diff --git a/src/pages/common/components/DiscussionFeedCard/DiscussionFeedCard.tsx b/src/pages/common/components/DiscussionFeedCard/DiscussionFeedCard.tsx index 0ecf31b59d..54eb9d3883 100644 --- a/src/pages/common/components/DiscussionFeedCard/DiscussionFeedCard.tsx +++ b/src/pages/common/components/DiscussionFeedCard/DiscussionFeedCard.tsx @@ -8,6 +8,7 @@ import React, { import { useDispatch, useSelector } from "react-redux"; import { useUpdateEffect } from "react-use"; import { debounce } from "lodash"; +import copyToClipboard from "copy-to-clipboard"; import { selectUser } from "@/pages/Auth/store/selectors"; import { DiscussionService } from "@/services"; import { DeletePrompt, GlobalOverlay, ReportModal } from "@/shared/components"; @@ -33,10 +34,9 @@ import { PredefinedTypes, } from "@/shared/models"; import { TextEditorValue } from "@/shared/ui-kit"; -import { StaticLinkType, getUserName, InternalLinkData, generateFirstMessage } from "@/shared/utils"; +import { StaticLinkType, getUserName, InternalLinkData, generateFirstMessage, generateStaticShareLink } from "@/shared/utils"; import { useChatContext } from "../ChatComponent"; import { FeedCard } from "../FeedCard"; -import { FeedCardShare } from "../FeedCard"; import { FeedItemRef, GetLastMessageOptions, @@ -122,11 +122,6 @@ function DiscussionFeedCard(props, ref) { onOpen: onReportModalOpen, onClose: onReportModalClose, } = useModal(false); - const { - isShowing: isShareModalOpen, - onOpen: onShareModalOpen, - onClose: onShareModalClose, - } = useModal(false); const { isShowing: isDeleteModalOpen, onOpen: onDeleteModalOpen, @@ -194,7 +189,12 @@ function DiscussionFeedCard(props, ref) { }, { report: onReportModalOpen, - share: () => onShareModalOpen(), + share: () => { + if(discussion) { + copyToClipboard(generateStaticShareLink(StaticLinkType.Discussion, discussion, item.id)); + notify("The link has copied!"); + } + }, remove: onDeleteModalOpen, linkStream: onLinkStreamModalOpen, unlinkStream: onUnlinkStreamModalOpen, @@ -464,15 +464,6 @@ function DiscussionFeedCard(props, ref) { type={EntityTypes.Discussion} /> )} - {discussion && ( - - )} {isDeleteModalOpen && ( ( setHovering(isMouseEnter); }; const proposalId = item.data.id; - const { - isShowing: isShareModalOpen, - onOpen: onShareModalOpen, - onClose: onShareModalClose, - } = useModal(false); const preloadDiscussionMessagesData = usePreloadDiscussionMessagesById({ commonId, discussionId: discussion?.id, @@ -202,7 +198,12 @@ const ProposalFeedCard = forwardRef( }, { report: () => {}, - share: () => onShareModalOpen(), + share: () => { + if(discussion) { + copyToClipboard(generateStaticShareLink(StaticLinkType.Proposal, discussion, item.id)); + notify("The link has copied!"); + } + }, remove: onProposalDeleteModalOpen, markFeedItemAsSeen, markFeedItemAsUnseen, @@ -457,15 +458,6 @@ const ProposalFeedCard = forwardRef( /> )} - {discussion && ( - - )} {isProposalDeleteModalOpen && ( = (props) => { const { common, commonMember, commonFollow, onClick, onSearchClick } = props; - const { - isShowing: isShareModalOpen, - onOpen: onShareModalOpen, - onClose: onShareModalClose, - } = useModal(false); + const { notify } = useNotification(); const { markCommonAsSeen } = useUpdateCommonSeenState(); + const shareLink = generateStaticShareLink(StaticLinkType.Common, common); const items = useMenuItems( { common, @@ -32,23 +29,21 @@ const ActionsButton: FC = (props) => { isSearchActionAvailable: Boolean(onSearchClick), }, { - share: onShareModalOpen, + share: () => { + copyToClipboard(shareLink); + notify("The link has copied!"); + }, onFollowToggle: commonFollow.onFollowToggle, onSearchClick, markCommonAsSeen }, ); - const shareLink = generateStaticShareLink(StaticLinkType.Common, common); + const triggerEl = ; return ( <> {items.length > 0 && } - ); }; diff --git a/src/shared/components/ElementDropdown/ElementDropdown.tsx b/src/shared/components/ElementDropdown/ElementDropdown.tsx index 1e5c09ef83..52b904e9f4 100644 --- a/src/shared/components/ElementDropdown/ElementDropdown.tsx +++ b/src/shared/components/ElementDropdown/ElementDropdown.tsx @@ -261,7 +261,8 @@ const ElementDropdown: FC = ({ switch (selectedItem) { case ElementDropdownMenuItems.Share: - onOpen(); + copyToClipboard(staticShareLink); + notify("The link has copied!"); break; case ElementDropdownMenuItems.Copy: copyToClipboard(