From c77e49f2715dd6200a451482f9ec3a4a5636d77d Mon Sep 17 00:00:00 2001 From: Alex Benzer Date: Mon, 27 Oct 2025 16:02:51 -0700 Subject: [PATCH] Adds client event for empty feed error --- src/logger/metrics.ts | 5 +++++ src/view/com/posts/CustomFeedEmptyState.tsx | 25 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/logger/metrics.ts b/src/logger/metrics.ts index a9ae7fe083..41a727c603 100644 --- a/src/logger/metrics.ts +++ b/src/logger/metrics.ts @@ -195,6 +195,11 @@ export type MetricEvents = { feed: string count: number } + 'feed:emptyError': { + feedType: string + feedId: string + userDid: string + } 'composer:gif:open': {} 'composer:gif:select': {} diff --git a/src/view/com/posts/CustomFeedEmptyState.tsx b/src/view/com/posts/CustomFeedEmptyState.tsx index 580e5b2e40..5ef0a1fe60 100644 --- a/src/view/com/posts/CustomFeedEmptyState.tsx +++ b/src/view/com/posts/CustomFeedEmptyState.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, {useEffect} from 'react' import {StyleSheet, View} from 'react-native' import { FontAwesomeIcon, @@ -11,11 +11,34 @@ import {usePalette} from '#/lib/hooks/usePalette' import {MagnifyingGlassIcon} from '#/lib/icons' import {type NavigationProp} from '#/lib/routes/types' import {s} from '#/lib/styles' +import {logger} from '#/logger' import {isWeb} from '#/platform/detection' +import {useFeedFeedbackContext} from '#/state/feed-feedback' +import {useSession} from '#/state/session' import {Button} from '../util/forms/Button' import {Text} from '../util/text/Text' export function CustomFeedEmptyState() { + const feedFeedback = useFeedFeedbackContext() + const {currentAccount} = useSession() + + useEffect(() => { + // Log the empty feed error event + if (feedFeedback.feedSourceInfo && currentAccount?.did) { + const feedDescriptor = feedFeedback.feedDescriptor + const [feedType, feedId] = feedDescriptor?.split('|') || [ + 'unknown', + 'unknown', + ] + + logger.metric('feed:emptyError', { + feedType, + feedId, + userDid: currentAccount.did, + }) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) // Only log once when component mounts const pal = usePalette('default') const palInverted = usePalette('inverted') const navigation = useNavigation()