diff options
Diffstat (limited to 'src/view/com')
-rw-r--r-- | src/view/com/profile/ProfileMenu.tsx | 37 | ||||
-rw-r--r-- | src/view/com/util/forms/PostDropdownBtnMenuItems.tsx | 34 |
2 files changed, 69 insertions, 2 deletions
diff --git a/src/view/com/profile/ProfileMenu.tsx b/src/view/com/profile/ProfileMenu.tsx index f01fb5e17..770d17f48 100644 --- a/src/view/com/profile/ProfileMenu.tsx +++ b/src/view/com/profile/ProfileMenu.tsx @@ -6,11 +6,12 @@ import {useQueryClient} from '@tanstack/react-query' import {HITSLOP_20} from '#/lib/constants' import {makeProfileLink} from '#/lib/routes/links' -import {shareUrl} from '#/lib/sharing' +import {shareText, shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' import {logger} from '#/logger' import {Shadow} from '#/state/cache/types' import {useModalControls} from '#/state/modals' +import {useDevModeEnabled} from '#/state/preferences/dev-mode' import { RQKEY as profileQueryKey, useProfileBlockMutationQueue, @@ -52,6 +53,7 @@ let ProfileMenu = ({ const isBlocked = profile.viewer?.blocking || profile.viewer?.blockedBy const isFollowingBlockedAccount = isFollowing && isBlocked const isLabelerAndNotBlocked = !!profile.associated?.labeler && !isBlocked + const [devModeEnabled] = useDevModeEnabled() const [queueMute, queueUnmute] = useProfileMuteMutationQueue(profile) const [queueBlock, queueUnblock] = useProfileBlockMutationQueue(profile) @@ -167,6 +169,14 @@ let ProfileMenu = ({ reportDialogControl.open() }, [reportDialogControl]) + const onPressShareATUri = React.useCallback(() => { + shareText(`at://${profile.did}`) + }, [profile.did]) + + const onPressShareDID = React.useCallback(() => { + shareText(profile.did) + }, [profile.did]) + return ( <EventStopper onKeyDown={false}> <Menu.Root> @@ -308,6 +318,31 @@ let ProfileMenu = ({ </Menu.Group> </> )} + {devModeEnabled ? ( + <> + <Menu.Divider /> + <Menu.Group> + <Menu.Item + testID="profileHeaderDropdownShareATURIBtn" + label={_(msg`Copy at:// URI`)} + onPress={onPressShareATUri}> + <Menu.ItemText> + <Trans>Copy at:// URI</Trans> + </Menu.ItemText> + <Menu.ItemIcon icon={Share} /> + </Menu.Item> + <Menu.Item + testID="profileHeaderDropdownShareDIDBtn" + label={_(msg`Copy DID`)} + onPress={onPressShareDID}> + <Menu.ItemText> + <Trans>Copy DID</Trans> + </Menu.ItemText> + <Menu.ItemIcon icon={Share} /> + </Menu.Item> + </Menu.Group> + </> + ) : null} </Menu.Outer> </Menu.Root> diff --git a/src/view/com/util/forms/PostDropdownBtnMenuItems.tsx b/src/view/com/util/forms/PostDropdownBtnMenuItems.tsx index 149bb9ad2..41f7e74a6 100644 --- a/src/view/com/util/forms/PostDropdownBtnMenuItems.tsx +++ b/src/view/com/util/forms/PostDropdownBtnMenuItems.tsx @@ -21,7 +21,7 @@ import {useOpenLink} from '#/lib/hooks/useOpenLink' import {getCurrentRoute} from '#/lib/routes/helpers' import {makeProfileLink} from '#/lib/routes/links' import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types' -import {shareUrl} from '#/lib/sharing' +import {shareText, shareUrl} from '#/lib/sharing' import {logEvent} from '#/lib/statsig/statsig' import {richTextToString} from '#/lib/strings/rich-text-helpers' import {toShareUrl} from '#/lib/strings/url-helpers' @@ -33,6 +33,7 @@ import {useProfileShadow} from '#/state/cache/profile-shadow' import {useFeedFeedbackContext} from '#/state/feed-feedback' import {useLanguagePrefs} from '#/state/preferences' import {useHiddenPosts, useHiddenPostsApi} from '#/state/preferences' +import {useDevModeEnabled} from '#/state/preferences/dev-mode' import {usePinnedPostMutation} from '#/state/queries/pinned-post' import { usePostDeleteMutation, @@ -122,6 +123,7 @@ let PostDropdownMenuItems = ({ const hideReplyConfirmControl = useDialogControl() const {mutateAsync: toggleReplyVisibility} = useToggleReplyVisibilityMutation() + const [devModeEnabled] = useDevModeEnabled() const postUri = post.uri const postCid = post.cid @@ -366,6 +368,14 @@ let PostDropdownMenuItems = ({ } }, [_, queueBlock]) + const onShareATURI = useCallback(() => { + shareText(postUri) + }, [postUri]) + + const onShareAuthorDID = useCallback(() => { + shareText(postAuthor.did) + }, [postAuthor.did]) + return ( <> <Menu.Outer> @@ -647,6 +657,28 @@ let PostDropdownMenuItems = ({ </> )} </Menu.Group> + + {devModeEnabled ? ( + <> + <Menu.Divider /> + <Menu.Group> + <Menu.Item + testID="postAtUriShareBtn" + label={_(msg`Copy post at:// URI`)} + onPress={onShareATURI}> + <Menu.ItemText>{_(msg`Copy post at:// URI`)}</Menu.ItemText> + <Menu.ItemIcon icon={Share} position="right" /> + </Menu.Item> + <Menu.Item + testID="postAuthorDIDShareBtn" + label={_(msg`Copy author DID`)} + onPress={onShareAuthorDID}> + <Menu.ItemText>{_(msg`Copy author DID`)}</Menu.ItemText> + <Menu.ItemIcon icon={Share} position="right" /> + </Menu.Item> + </Menu.Group> + </> + ) : null} </> )} </Menu.Outer> |