From 7ca9bd0e806d0bd87975c9caba2caf926b16cbb8 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Thu, 22 May 2025 11:37:55 +0300 Subject: [PATCH] add metrics --- .../PostControls/ShareMenu/RecentChats.tsx | 2 ++ .../PostControls/ShareMenu/ShareMenuItems.tsx | 8 +++++++- .../ShareMenu/ShareMenuItems.web.tsx | 19 ++++++++++++++----- .../PostControls/ShareMenu/index.tsx | 10 +++++++++- src/logger/metrics.ts | 8 ++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/components/PostControls/ShareMenu/RecentChats.tsx b/src/components/PostControls/ShareMenu/RecentChats.tsx index 17e90e6ef0..ca5d0029ec 100644 --- a/src/components/PostControls/ShareMenu/RecentChats.tsx +++ b/src/components/PostControls/ShareMenu/RecentChats.tsx @@ -7,6 +7,7 @@ import {useNavigation} from '@react-navigation/native' import {type NavigationProp} from '#/lib/routes/types' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' +import {logger} from '#/logger' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useListConvosQuery} from '#/state/queries/messages/list-conversations' import {useSession} from '#/state/session' @@ -30,6 +31,7 @@ export function RecentChats({postUri}: {postUri: string}) { const onSelectChat = (convoId: string) => { control.close(() => { + logger.metric('share:press:recentDm', {}, {statsig: true}) navigation.navigate('MessagesConversation', { conversation: convoId, embed: postUri, diff --git a/src/components/PostControls/ShareMenu/ShareMenuItems.tsx b/src/components/PostControls/ShareMenu/ShareMenuItems.tsx index c5f530e8db..1d12f87649 100644 --- a/src/components/PostControls/ShareMenu/ShareMenuItems.tsx +++ b/src/components/PostControls/ShareMenu/ShareMenuItems.tsx @@ -9,6 +9,7 @@ import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {shareText, shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' +import {logger} from '#/logger' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useSession} from '#/state/session' import * as Toast from '#/view/com/util/Toast' @@ -54,12 +55,14 @@ let ShareMenuItems = ({ postAuthor.did !== currentAccount?.did && hideInPWI const onSharePost = () => { + logger.metric('share:press:nativeShare', {}, {statsig: true}) const url = toShareUrl(href) shareUrl(url) onShareProp() } const onCopyLink = () => { + logger.metric('share:press:copyLink', {}, {statsig: true}) const url = toShareUrl(href) ExpoClipboard.setUrlAsync(url).then(() => Toast.show(_(msg`Copied to clipboard`), 'clipboard-check'), @@ -93,7 +96,10 @@ let ShareMenuItems = ({ sendViaChatControl.open()}> + onPress={() => { + logger.metric('share:press:openDmSearch', {}, {statsig: true}) + sendViaChatControl.open() + }}> Send via direct message diff --git a/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx b/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx index 5a8a2e7db7..4eb90576c8 100644 --- a/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx +++ b/src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx @@ -9,6 +9,7 @@ import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {shareText, shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' +import {logger} from '#/logger' import {isWeb} from '#/platform/detection' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useSession} from '#/state/session' @@ -58,13 +59,15 @@ let ShareMenuItems = ({ const showLoggedOutWarning = postAuthor.did !== currentAccount?.did && hideInPWI - const onSharePost = () => { + const onCopyLink = () => { + logger.metric('share:press:copyLink', {}, {statsig: true}) const url = toShareUrl(href) shareUrl(url) onShareProp() } const onSelectChatToShareTo = (conversation: string) => { + logger.metric('share:press:dmSelected', {}, {statsig: true}) navigation.navigate('MessagesConversation', { conversation, embed: postUri, @@ -92,7 +95,7 @@ let ShareMenuItems = ({ if (showLoggedOutWarning) { loggedOutWarningPromptControl.open() } else { - onSharePost() + onCopyLink() } }}> @@ -105,7 +108,10 @@ let ShareMenuItems = ({ sendViaChatControl.open()}> + onPress={() => { + logger.metric('share:press:openDmSearch', {}, {statsig: true}) + sendViaChatControl.open() + }}> Send via direct message @@ -117,7 +123,10 @@ let ShareMenuItems = ({ embedPostControl.open()}> + onPress={() => { + logger.metric('share:press:embed', {}, {statsig: true}) + embedPostControl.open() + }}> {_(msg`Embed post`)} @@ -157,7 +166,7 @@ let ShareMenuItems = ({ description={_( msg`This post is only visible to logged-in users. It won't be visible to people who aren't signed in.`, )} - onConfirm={onSharePost} + onConfirm={onCopyLink} confirmButtonCta={_(msg`Share anyway`)} /> diff --git a/src/components/PostControls/ShareMenu/index.tsx b/src/components/PostControls/ShareMenu/index.tsx index 961f225ef5..c60f371f4a 100644 --- a/src/components/PostControls/ShareMenu/index.tsx +++ b/src/components/PostControls/ShareMenu/index.tsx @@ -13,6 +13,7 @@ import type React from 'react' import {makeProfileLink} from '#/lib/routes/links' import {shareUrl} from '#/lib/sharing' import {toShareUrl} from '#/lib/strings/url-helpers' +import {logger} from '#/logger' import {type Shadow} from '#/state/cache/post-shadow' import {EventStopper} from '#/view/com/util/EventStopper' import {native} from '#/alf' @@ -53,12 +54,19 @@ let ShareMenuButton = ({ // HACK. We need the state update to be flushed by the time // menuControl.open() fires but RN doesn't expose flushSync. setTimeout(menuControl.open) + + logger.metric( + 'share:open', + {context: big ? 'thread' : 'feed'}, + {statsig: true}, + ) }, }), - [menuControl, setHasBeenOpen], + [menuControl, setHasBeenOpen, big], ) const onNativeLongPress = () => { + logger.metric('share:press:nativeShare', {}, {statsig: true}) const urip = new AtUri(post.uri) const href = makeProfileLink(post.author, 'post', urip.rkey) const url = toShareUrl(href) diff --git a/src/logger/metrics.ts b/src/logger/metrics.ts index d64e44b40b..dfb8cd5416 100644 --- a/src/logger/metrics.ts +++ b/src/logger/metrics.ts @@ -395,4 +395,12 @@ export type MetricEvents = { 'live:card:openProfile': {subject: string} 'live:view:profile': {subject: string} 'live:view:post': {subject: string; feed?: string} + + 'share:open': {context: 'feed' | 'thread'} + 'share:press:copyLink': {} + 'share:press:nativeShare': {} + 'share:press:openDmSearch': {} + 'share:press:dmSelected': {} + 'share:press:recentDm': {} + 'share:press:embed': {} }