From 618c4e4a56987a1520ee9ca871b2d8e20b13fded Mon Sep 17 00:00:00 2001 From: Hailey Date: Thu, 6 Mar 2025 12:20:48 -0800 Subject: add some metrics for labelers (#7747) * add some metrics * add label pref switch metric * Update src/screens/Profile/Header/ProfileHeaderLabeler.tsx * Use new logger.metric * Fix conflicting types * Remove duplicate toasts * Move metric to try body * Move metric to try body --------- Co-authored-by: Eric Bailey --- src/logger/metrics.ts | 13 +++++++++++++ src/screens/Profile/Header/ProfileHeaderLabeler.tsx | 12 +++++++++++- src/state/queries/preferences/index.ts | 6 ++++++ src/view/screens/ProfileList.tsx | 20 ++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/logger/metrics.ts b/src/logger/metrics.ts index 66f79e4f6..abb7b670f 100644 --- a/src/logger/metrics.ts +++ b/src/logger/metrics.ts @@ -306,6 +306,19 @@ export type MetricEvents = { 'progressGuide:hide': {} 'progressGuide:followDialog:open': {} + 'moderation:subscribedToLabeler': {} + 'moderation:unsubscribedFromLabeler': {} + 'moderation:changeLabelPreference': { + preference: string + } + + 'moderation:subscribedToList': { + listType: 'mute' | 'block' + } + 'moderation:unsubscribedFromList': { + listType: 'mute' | 'block' + } + 'reportDialog:open': { subjectType: string } diff --git a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx index 94de86228..d355b9987 100644 --- a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx +++ b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx @@ -134,11 +134,21 @@ let ProfileHeaderLabeler = ({ const onPressSubscribe = React.useCallback( () => requireAuth(async (): Promise => { + const subscribe = !isSubscribed + try { await toggleSubscription({ did: profile.did, - subscribe: !isSubscribed, + subscribe, }) + + logger.metric( + subscribe + ? 'moderation:subscribedToLabeler' + : 'moderation:unsubscribedFromLabeler', + {}, + {statsig: true}, + ) } catch (e: any) { reset() if (e.message === 'MAX_LABELERS') { diff --git a/src/state/queries/preferences/index.ts b/src/state/queries/preferences/index.ts index 3cb121a47..81b3dd086 100644 --- a/src/state/queries/preferences/index.ts +++ b/src/state/queries/preferences/index.ts @@ -8,6 +8,7 @@ import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' import {PROD_DEFAULT_FEED} from '#/lib/constants' import {replaceEqualDeep} from '#/lib/functions' import {getAge} from '#/lib/strings/time' +import {logger} from '#/logger' import {STALE} from '#/state/queries' import { DEFAULT_HOME_FEED_PREFS, @@ -96,6 +97,11 @@ export function usePreferencesSetContentLabelMutation() { >({ mutationFn: async ({label, visibility, labelerDid}) => { await agent.setContentLabelPref(label, visibility, labelerDid) + logger.metric( + 'moderation:changeLabelPreference', + {preference: visibility}, + {statsig: true}, + ) // triggers a refetch await queryClient.invalidateQueries({ queryKey: preferencesQueryKey, diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx index 66a6478fa..acd603126 100644 --- a/src/view/screens/ProfileList.tsx +++ b/src/view/screens/ProfileList.tsx @@ -393,6 +393,11 @@ function Header({ try { await listMuteMutation.mutateAsync({uri: list.uri, mute: true}) Toast.show(_(msg({message: 'List muted', context: 'toast'}))) + logger.metric( + 'moderation:subscribedToList', + {listType: 'mute'}, + {statsig: true}, + ) } catch { Toast.show( _( @@ -406,6 +411,11 @@ function Header({ try { await listMuteMutation.mutateAsync({uri: list.uri, mute: false}) Toast.show(_(msg({message: 'List unmuted', context: 'toast'}))) + logger.metric( + 'moderation:unsubscribedFromList', + {listType: 'mute'}, + {statsig: true}, + ) } catch { Toast.show( _( @@ -419,6 +429,11 @@ function Header({ try { await listBlockMutation.mutateAsync({uri: list.uri, block: true}) Toast.show(_(msg({message: 'List blocked', context: 'toast'}))) + logger.metric( + 'moderation:subscribedToList', + {listType: 'block'}, + {statsig: true}, + ) } catch { Toast.show( _( @@ -432,6 +447,11 @@ function Header({ try { await listBlockMutation.mutateAsync({uri: list.uri, block: false}) Toast.show(_(msg({message: 'List unblocked', context: 'toast'}))) + logger.metric( + 'moderation:unsubscribedFromList', + {listType: 'block'}, + {statsig: true}, + ) } catch { Toast.show( _( -- cgit 1.4.1