Post view client event (#9408)

* Adds post:view client event tracking in feeds

* Add post:view event on the post page itself

* Don't send post:view to statsig for now

* convert to non reactive callback to reduce rerenders

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
This commit is contained in:
Alex Benzer
2025-11-20 07:41:56 -08:00
committed by GitHub
parent 2faf62c7f7
commit 002a63b125
3 changed files with 114 additions and 4 deletions
+25 -1
View File
@@ -1,10 +1,11 @@
import {useCallback, useMemo, useRef, useState} from 'react'
import {useCallback, useEffect, useMemo, useRef, useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
import Animated, {useAnimatedStyle} from 'react-native-reanimated'
import {Trans} from '@lingui/macro'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
import {logger} from '#/logger'
import {useFeedFeedback} from '#/state/feed-feedback'
import {type ThreadViewOption} from '#/state/queries/preferences/useThreadPreferences'
import {
@@ -73,6 +74,29 @@ export function PostThread({uri}: {uri: string}) {
return {hasParents}
}, [thread.data.items])
// Track post:view event when anchor post is viewed
const seenPostUriRef = useRef<string | null>(null)
useEffect(() => {
if (
anchor?.type === 'threadPost' &&
anchor.value.post.uri !== seenPostUriRef.current
) {
const post = anchor.value.post
seenPostUriRef.current = post.uri
logger.metric(
'post:view',
{
uri: post.uri,
authorDid: post.author.did,
logContext: 'Post',
feedDescriptor: feedFeedback.feedDescriptor,
},
{statsig: false},
)
}
}, [anchor, feedFeedback.feedDescriptor])
const {openComposer} = useOpenComposer()
const optimisticOnPostReply = useCallback(
(payload: OnPostSuccessData) => {