From e684c21572074d34c2ada7875c5e790f6dbe2f63 Mon Sep 17 00:00:00 2001 From: Alex Benzer Date: Wed, 14 Jan 2026 12:53:24 -0800 Subject: [PATCH] Improved client events for feed interactions (#9695) --- src/logger/metrics.ts | 8 ++++++++ src/state/queries/post.ts | 40 +++++++++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/logger/metrics.ts b/src/logger/metrics.ts index dddca72a17..0af92a6e7c 100644 --- a/src/logger/metrics.ts +++ b/src/logger/metrics.ts @@ -244,6 +244,8 @@ export type MetricEvents = { isReply: boolean } 'post:like': { + uri: string + authorDid: string doesLikerFollowPoster: boolean | undefined doesPosterFollowLiker: boolean | undefined likerClout: number | undefined @@ -252,14 +254,20 @@ export type MetricEvents = { feedDescriptor?: string } 'post:repost': { + uri: string + authorDid: string logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo' feedDescriptor?: string } 'post:unlike': { + uri: string + authorDid: string logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo' feedDescriptor?: string } 'post:unrepost': { + uri: string + authorDid: string logContext: 'FeedItem' | 'PostThreadItem' | 'Post' | 'ImmersiveVideo' feedDescriptor?: string } diff --git a/src/state/queries/post.ts b/src/state/queries/post.ts index 8fdfc584b6..3043485b3e 100644 --- a/src/state/queries/post.ts +++ b/src/state/queries/post.ts @@ -111,7 +111,7 @@ export function usePostLikeMutationQueue( const postCid = post.cid const initialLikeUri = post.viewer?.like const likeMutation = usePostLikeMutation(feedDescriptor, logContext, post) - const unlikeMutation = usePostUnlikeMutation(feedDescriptor, logContext) + const unlikeMutation = usePostUnlikeMutation(feedDescriptor, logContext, post) const queueToggle = useToggleMutationQueue({ initialState: initialLikeUri, @@ -182,6 +182,8 @@ function usePostLikeMutation( ownProfile = findProfileQueryData(queryClient, currentAccount.did) } logger.metric('post:like', { + uri, + authorDid: postAuthor.did, logContext, doesPosterFollowLiker: postAuthor.viewer ? Boolean(postAuthor.viewer.followedBy) @@ -206,11 +208,17 @@ function usePostLikeMutation( function usePostUnlikeMutation( feedDescriptor: string | undefined, logContext: LogEvents['post:unlike']['logContext'], + post: Shadow, ) { const agent = useAgent() return useMutation({ - mutationFn: ({likeUri}) => { - logger.metric('post:unlike', {logContext, feedDescriptor}) + mutationFn: ({postUri, likeUri}) => { + logger.metric('post:unlike', { + uri: postUri, + authorDid: post.author.did, + logContext, + feedDescriptor, + }) return agent.deleteLike(likeUri) }, }) @@ -227,8 +235,12 @@ export function usePostRepostMutationQueue( const postUri = post.uri const postCid = post.cid const initialRepostUri = post.viewer?.repost - const repostMutation = usePostRepostMutation(feedDescriptor, logContext) - const unrepostMutation = usePostUnrepostMutation(feedDescriptor, logContext) + const repostMutation = usePostRepostMutation(feedDescriptor, logContext, post) + const unrepostMutation = usePostUnrepostMutation( + feedDescriptor, + logContext, + post, + ) const queueToggle = useToggleMutationQueue({ initialState: initialRepostUri, @@ -280,6 +292,7 @@ export function usePostRepostMutationQueue( function usePostRepostMutation( feedDescriptor: string | undefined, logContext: LogEvents['post:repost']['logContext'], + post: Shadow, ) { const agent = useAgent() return useMutation< @@ -288,7 +301,12 @@ function usePostRepostMutation( {uri: string; cid: string; via?: {uri: string; cid: string}} // the post's uri and cid, and the repost uri/cid if present >({ mutationFn: ({uri, cid, via}) => { - logger.metric('post:repost', {logContext, feedDescriptor}) + logger.metric('post:repost', { + uri, + authorDid: post.author.did, + logContext, + feedDescriptor, + }) return agent.repost(uri, cid, via) }, }) @@ -297,11 +315,17 @@ function usePostRepostMutation( function usePostUnrepostMutation( feedDescriptor: string | undefined, logContext: LogEvents['post:unrepost']['logContext'], + post: Shadow, ) { const agent = useAgent() return useMutation({ - mutationFn: ({repostUri}) => { - logger.metric('post:unrepost', {logContext, feedDescriptor}) + mutationFn: ({postUri, repostUri}) => { + logger.metric('post:unrepost', { + uri: postUri, + authorDid: post.author.did, + logContext, + feedDescriptor, + }) return agent.deleteRepost(repostUri) }, })