Skip to content

Commit

Permalink
Trending tracking (#7161)
Browse files Browse the repository at this point in the history
* Add hide to Explore

* Event for show

* Add hide events to each location
  • Loading branch information
estrattonbailey authored Dec 18, 2024
1 parent 05c43ed commit e7b015f
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 5 deletions.
9 changes: 8 additions & 1 deletion src/components/interstitials/Trending.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'

import {logEvent} from '#/lib/statsig/statsig'
import {
useTrendingSettings,
useTrendingSettingsApi,
Expand Down Expand Up @@ -39,6 +41,11 @@ export function Inner() {
const {data: trending, error, isLoading} = useTrendingTopics()
const noTopics = !isLoading && !error && !trending?.topics?.length

const onConfirmHide = React.useCallback(() => {
logEvent('trendingTopics:hide', {context: 'interstitial'})
setTrendingDisabled(true)
}, [setTrendingDisabled])

return error || noTopics ? null : (
<View
style={[
Expand Down Expand Up @@ -104,7 +111,7 @@ export function Inner() {
title={_(msg`Hide trending topics?`)}
description={_(msg`You can update this later from your settings.`)}
confirmButtonCta={_(msg`Hide`)}
onConfirm={() => setTrendingDisabled(true)}
onConfirm={onConfirmHide}
/>
</View>
)
Expand Down
5 changes: 5 additions & 0 deletions src/lib/statsig/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,4 +236,9 @@ export type LogEvents = {
'tmd:share': {}
'tmd:download': {}
'tmd:post': {}

'trendingTopics:show': {}
'trendingTopics:hide': {
context: 'sidebar' | 'interstitial' | 'explore'
}
}
39 changes: 37 additions & 2 deletions src/screens/Search/components/ExploreTrendingTopics.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
import React from 'react'
import {View} from 'react-native'
import {Trans} from '@lingui/macro'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'

import {logEvent} from '#/lib/statsig/statsig'
import {isWeb} from '#/platform/detection'
import {useTrendingSettings} from '#/state/preferences/trending'
import {
useTrendingSettings,
useTrendingSettingsApi,
} from '#/state/preferences/trending'
import {
DEFAULT_LIMIT as TRENDING_TOPICS_COUNT,
useTrendingTopics,
} from '#/state/queries/trending/useTrendingTopics'
import {useTrendingConfig} from '#/state/trending-config'
import {atoms as a, tokens, useGutters, useTheme} from '#/alf'
import {Button, ButtonIcon} from '#/components/Button'
import {GradientFill} from '#/components/GradientFill'
import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times'
import {Trending2_Stroke2_Corner2_Rounded as Trending} from '#/components/icons/Trending2'
import * as Prompt from '#/components/Prompt'
import {
TrendingTopic,
TrendingTopicLink,
Expand All @@ -26,9 +35,17 @@ export function ExploreTrendingTopics() {

function Inner() {
const t = useTheme()
const {_} = useLingui()
const gutters = useGutters([0, 'compact'])
const {data: trending, error, isLoading} = useTrendingTopics()
const noTopics = !isLoading && !error && !trending?.topics?.length
const {setTrendingDisabled} = useTrendingSettingsApi()
const trendingPrompt = Prompt.usePromptControl()

const onConfirmHide = React.useCallback(() => {
logEvent('trendingTopics:hide', {context: 'explore'})
setTrendingDisabled(true)
}, [setTrendingDisabled])

return error || noTopics ? null : (
<>
Expand Down Expand Up @@ -61,6 +78,16 @@ function Inner() {
<Trans>What people are posting about.</Trans>
</Text>
</View>

<Button
label={_(msg`Hide trending tpoics`)}
size="small"
variant="ghost"
color="secondary"
shape="round"
onPress={() => trendingPrompt.open()}>
<ButtonIcon icon={X} />
</Button>
</View>

<View style={[a.pt_md, a.pb_lg]}>
Expand Down Expand Up @@ -97,6 +124,14 @@ function Inner() {
)}
</View>
</View>

<Prompt.Basic
control={trendingPrompt}
title={_(msg`Hide trending topics?`)}
description={_(msg`You can update this later from your settings.`)}
confirmButtonCta={_(msg`Hide`)}
onConfirm={onConfirmHide}
/>
</>
)
}
7 changes: 6 additions & 1 deletion src/state/preferences/trending.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React from 'react'

import {logEvent} from '#/lib/statsig/statsig'
import * as persisted from '#/state/persisted'

type StateContext = {
Expand All @@ -26,7 +27,11 @@ function usePersistedBooleanValue<T extends keyof persisted.Schema>(key: T) {
(value: Exclude<persisted.Schema[T], undefined>) => void
>(
hidden => {
_set(Boolean(hidden))
const hide = Boolean(hidden)
if (!hide) {
logEvent('trendingTopics:show', {})
}
_set(hide)
persisted.write(key, hidden)
},
[key, _set],
Expand Down
9 changes: 8 additions & 1 deletion src/view/shell/desktop/SidebarTrendingTopics.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'

import {logEvent} from '#/lib/statsig/statsig'
import {
useTrendingSettings,
useTrendingSettingsApi,
Expand Down Expand Up @@ -37,6 +39,11 @@ function Inner() {
const {data: trending, error, isLoading} = useTrendingTopics()
const noTopics = !isLoading && !error && !trending?.topics?.length

const onConfirmHide = React.useCallback(() => {
logEvent('trendingTopics:hide', {context: 'sidebar'})
setTrendingDisabled(true)
}, [setTrendingDisabled])

return error || noTopics ? null : (
<>
<View style={[a.gap_sm, {paddingBottom: 2}]}>
Expand Down Expand Up @@ -96,7 +103,7 @@ function Inner() {
title={_(msg`Hide trending topics?`)}
description={_(msg`You can update this later from your settings.`)}
confirmButtonCta={_(msg`Hide`)}
onConfirm={() => setTrendingDisabled(true)}
onConfirm={onConfirmHide}
/>
<Divider />
</>
Expand Down

0 comments on commit e7b015f

Please sign in to comment.