From d3f8e740deee7fba4d07910bbb076156cae3f588 Mon Sep 17 00:00:00 2001 From: DS Boyce <260543580+ds-boyce@users.noreply.github.com> Date: Wed, 10 Jun 2026 21:44:36 +0000 Subject: [PATCH] Log when a chat invite is posted or messaged (#10858) --- src/analytics/metrics/types.ts | 4 ++++ src/screens/Messages/components/MessagesList.tsx | 10 ++++++++++ src/view/com/composer/Composer.tsx | 14 ++++++++++++++ 3 file(s) changed, 28 insertion(s)(+), 0 deletion(s)(-) diff --git a/src/analytics/metrics/types.ts b/src/analytics/metrics/types.ts --- a/src/analytics/metrics/types.ts +++ b/src/analytics/metrics/types.ts @@ -619,6 +619,10 @@ 'groupchat:inviteLink:shareButton:press': { convoId: string method: 'post' | 'copy' | 'native' } + 'groupchat:inviteLink:shared': { + convoId: string + method: 'post' | 'dm' + } // Group chat owner actions 'groupchat:owner:editName': { diff --git a/src/screens/Messages/components/MessagesList.tsx b/src/screens/Messages/components/MessagesList.tsx --- a/src/screens/Messages/components/MessagesList.tsx +++ b/src/screens/Messages/components/MessagesList.tsx @@ -30,6 +30,7 @@ type AppBskyEmbedRecord, AppBskyRichtextFacet, ChatBskyConvoDefs, type ChatBskyEmbedJoinLink, + ChatBskyGroupDefs, RichText, } from '@atproto/api' import {useScrollEdgeEffectRef} from '@bsky.app/expo-scroll-edge-effect' @@ -476,6 +477,15 @@ if (convoState.convo.kind === 'group') { ax.metric('groupchat:message:send', { convoId: convoState.convo.view.id, isOwner: convoState.convo.primaryMember?.did === currentAccount?.did, + }) + } + if ( + embedView?.$type === 'chat.bsky.embed.joinLink#view' && + ChatBskyGroupDefs.isJoinLinkPreviewView(embedView.joinLinkPreview) + ) { + ax.metric('groupchat:inviteLink:shared', { + convoId: embedView.joinLinkPreview.convoId, + method: 'dm', }) } }, diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -1071,6 +1071,20 @@ postCount: filteredThread.posts.length, isReply: !!replyTo, }) } + if (postUri) { + for (const q of linkQueries) { + const resolved = q.data + if ( + resolved?.type === 'chat-invite' && + ChatBskyGroupDefs.isJoinLinkPreviewView(resolved.view) + ) { + ax.metric('groupchat:inviteLink:shared', { + convoId: resolved.view.convoId, + method: 'post', + }) + } + } + } } if (postUri && !replyTo) { emitPostCreated() -- tangled.sh