Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[Statsig] Track feed refresh (#3283)

authored by

dan and committed by
GitHub
b6c9d34e 54f424d0

+19 -2
+4
src/lib/statsig/events.ts
··· 9 9 feedType: string 10 10 itemCount: number 11 11 } 12 + 'feed:refresh': { 13 + feedType: string 14 + reason: 'pull-to-refresh' | 'soft-reset' | 'load-latest' 15 + } 12 16 'post:create': { 13 17 imageCount: number 14 18 isReply: boolean
+9
src/view/com/feeds/FeedPage.tsx
··· 22 22 import {truncateAndInvalidate} from '#/state/queries/util' 23 23 import {TabState, getTabState, getRootNavigation} from '#/lib/routes/helpers' 24 24 import {isNative} from '#/platform/detection' 25 + import {logEvent} from '#/lib/statsig/statsig' 25 26 26 27 const POLL_FREQ = 60e3 // 60sec 27 28 ··· 68 69 scrollToTop() 69 70 truncateAndInvalidate(queryClient, FEED_RQKEY(feed)) 70 71 setHasNew(false) 72 + logEvent('feed:refresh', { 73 + feedType: feed.split('|')[0], 74 + reason: 'soft-reset', 75 + }) 71 76 } 72 77 }, [navigation, isPageFocused, scrollToTop, queryClient, feed, setHasNew]) 73 78 ··· 89 94 scrollToTop() 90 95 truncateAndInvalidate(queryClient, FEED_RQKEY(feed)) 91 96 setHasNew(false) 97 + logEvent('feed:refresh', { 98 + feedType: feed.split('|')[0], 99 + reason: 'load-latest', 100 + }) 92 101 }, [scrollToTop, feed, queryClient, setHasNew]) 93 102 94 103 return (
+6 -2
src/view/com/posts/Feed.tsx
··· 90 90 const [isPTRing, setIsPTRing] = React.useState(false) 91 91 const checkForNewRef = React.useRef<(() => void) | null>(null) 92 92 const lastFetchRef = React.useRef<number>(Date.now()) 93 + const feedType = feed.split('|')[0] 93 94 94 95 const opts = React.useMemo( 95 96 () => ({enabled, ignoreFilterFor}), ··· 214 215 215 216 const onRefresh = React.useCallback(async () => { 216 217 track('Feed:onRefresh') 218 + logEvent('feed:refresh', { 219 + feedType: feedType, 220 + reason: 'pull-to-refresh', 221 + }) 217 222 setIsPTRing(true) 218 223 try { 219 224 await refetch() ··· 222 227 logger.error('Failed to refresh posts feed', {message: err}) 223 228 } 224 229 setIsPTRing(false) 225 - }, [refetch, track, setIsPTRing, onHasNew]) 230 + }, [refetch, track, setIsPTRing, onHasNew, feedType]) 226 231 227 - const feedType = feed.split('|')[0] 228 232 const onEndReached = React.useCallback(async () => { 229 233 if (isFetching || !hasNextPage || isError) return 230 234