diff --git a/src/components/interstitials/Trending.tsx b/src/components/interstitials/Trending.tsx index cec5e45c6a..7809365e5c 100644 --- a/src/components/interstitials/Trending.tsx +++ b/src/components/interstitials/Trending.tsx @@ -26,8 +26,8 @@ import {Text} from '#/components/Typography' export function TrendingInterstitial() { const {enabled} = useTrendingConfig() - const {trendingDiscoverHidden} = useTrendingSettings() - return !enabled ? null : trendingDiscoverHidden ? null : + const {trendingDisabled} = useTrendingSettings() + return enabled && !trendingDisabled ? : null } export function Inner() { @@ -35,7 +35,7 @@ export function Inner() { const {_} = useLingui() const gutters = useGutters(['base']) const trendingPrompt = Prompt.usePromptControl() - const {setTrendingDiscoverHidden} = useTrendingSettingsApi() + const {setTrendingDisabled} = useTrendingSettingsApi() const {data: trending, error, isLoading} = useTrendingTopics() const noTopics = !isLoading && !error && !trending?.topics?.length @@ -101,12 +101,12 @@ export function Inner() { setTrendingDiscoverHidden(true)} + onConfirm={() => setTrendingDisabled(true)} /> ) diff --git a/src/screens/Search/components/ExploreTrendingTopics.tsx b/src/screens/Search/components/ExploreTrendingTopics.tsx index 4d928e9ea3..8831d39658 100644 --- a/src/screens/Search/components/ExploreTrendingTopics.tsx +++ b/src/screens/Search/components/ExploreTrendingTopics.tsx @@ -2,6 +2,7 @@ import {View} from 'react-native' import {Trans} from '@lingui/macro' import {isWeb} from '#/platform/detection' +import {useTrendingSettings} from '#/state/preferences/trending' import { DEFAULT_LIMIT as TRENDING_TOPICS_COUNT, useTrendingTopics, @@ -19,7 +20,8 @@ import {Text} from '#/components/Typography' export function ExploreTrendingTopics() { const {enabled} = useTrendingConfig() - return enabled ? : null + const {trendingDisabled} = useTrendingSettings() + return enabled && !trendingDisabled ? : null } function Inner() { diff --git a/src/screens/Settings/ContentAndMediaSettings.tsx b/src/screens/Settings/ContentAndMediaSettings.tsx index 0f7e679dc4..bdbe1d191b 100644 --- a/src/screens/Settings/ContentAndMediaSettings.tsx +++ b/src/screens/Settings/ContentAndMediaSettings.tsx @@ -36,9 +36,8 @@ export function ContentAndMediaSettingsScreen({}: Props) { const inAppBrowserPref = useInAppBrowser() const setUseInAppBrowser = useSetInAppBrowser() const {enabled: trendingEnabled} = useTrendingConfig() - const {trendingSidebarHidden, trendingDiscoverHidden} = useTrendingSettings() - const {setTrendingSidebarHidden, setTrendingDiscoverHidden} = - useTrendingSettingsApi() + const {trendingDisabled} = useTrendingSettings() + const {setTrendingDisabled} = useTrendingSettingsApi() return ( @@ -117,30 +116,15 @@ export function ContentAndMediaSettingsScreen({}: Props) { {trendingEnabled && ( <> - {!isNative && ( - setTrendingSidebarHidden(!value)}> - - - - Show trending topics in your sidebar - - - - - )} setTrendingDiscoverHidden(!value)}> + name="show_trending_topics" + label={_(msg`Enable trending topics`)} + value={!trendingDisabled} + onChange={value => setTrendingDisabled(!value)}> - Show trending topics in your feed + Enable trending topics diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index e4852e2f72..0a9e5b2c07 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -125,12 +125,7 @@ const schema = z.object({ subtitlesEnabled: z.boolean().optional(), /** @deprecated */ mutedThreads: z.array(z.string()), - - /* - * Trending - */ - trendingSidebarHidden: z.boolean().optional(), - trendingDiscoverHidden: z.boolean().optional(), + trendingDisabled: z.boolean().optional(), }) export type Schema = z.infer @@ -176,12 +171,7 @@ export const defaults: Schema = { kawaii: false, hasCheckedForStarterPack: false, subtitlesEnabled: true, - - /* - * Trending - */ - trendingSidebarHidden: false, - trendingDiscoverHidden: false, + trendingDisabled: false, } export function tryParse(rawData: string): Schema | undefined { diff --git a/src/state/preferences/trending.tsx b/src/state/preferences/trending.tsx index 61a026c22e..bf5d8f13cc 100644 --- a/src/state/preferences/trending.tsx +++ b/src/state/preferences/trending.tsx @@ -3,31 +3,19 @@ import React from 'react' import * as persisted from '#/state/persisted' type StateContext = { - trendingSidebarHidden: Exclude< - persisted.Schema['trendingSidebarHidden'], - undefined - > - trendingDiscoverHidden: Exclude< - persisted.Schema['trendingDiscoverHidden'], - undefined - > + trendingDisabled: Exclude } type ApiContext = { - setTrendingSidebarHidden( - hidden: Exclude, - ): void - setTrendingDiscoverHidden( - hidden: Exclude, + setTrendingDisabled( + hidden: Exclude, ): void } const StateContext = React.createContext({ - trendingSidebarHidden: Boolean(persisted.defaults.trendingSidebarHidden), - trendingDiscoverHidden: Boolean(persisted.defaults.trendingDiscoverHidden), + trendingDisabled: Boolean(persisted.defaults.trendingDisabled), }) const ApiContext = React.createContext({ - setTrendingSidebarHidden() {}, - setTrendingDiscoverHidden() {}, + setTrendingDisabled() {}, }) function usePersistedBooleanValue(key: T) { @@ -53,21 +41,16 @@ function usePersistedBooleanValue(key: T) { } export function Provider({children}: React.PropsWithChildren<{}>) { - const [trendingSidebarHidden, setTrendingSidebarHidden] = - usePersistedBooleanValue('trendingSidebarHidden') - const [trendingDiscoverHidden, setTrendingDiscoverHidden] = - usePersistedBooleanValue('trendingDiscoverHidden') + const [trendingDisabled, setTrendingDisabled] = + usePersistedBooleanValue('trendingDisabled') /* * Context */ - const state = React.useMemo( - () => ({trendingSidebarHidden, trendingDiscoverHidden}), - [trendingSidebarHidden, trendingDiscoverHidden], - ) + const state = React.useMemo(() => ({trendingDisabled}), [trendingDisabled]) const api = React.useMemo( - () => ({setTrendingSidebarHidden, setTrendingDiscoverHidden}), - [setTrendingSidebarHidden, setTrendingDiscoverHidden], + () => ({setTrendingDisabled}), + [setTrendingDisabled], ) return ( diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx index d88d16955b..f83de84643 100644 --- a/src/view/com/posts/PostFeed.tsx +++ b/src/view/com/posts/PostFeed.tsx @@ -265,7 +265,7 @@ let PostFeed = ({ const showProgressIntersitial = (followProgressGuide || followAndLikeProgressGuide) && !isDesktop - const {trendingDiscoverHidden} = useTrendingSettings() + const {trendingDisabled} = useTrendingSettings() const feedItems: FeedRow[] = React.useMemo(() => { let feedKind: 'following' | 'discover' | 'profile' | undefined @@ -312,7 +312,7 @@ let PostFeed = ({ type: 'interstitialProgressGuide', key: 'interstitial-' + sliceIndex + '-' + lastFetchedAt, }) - } else if (sliceIndex === 15 && !trendingDiscoverHidden) { + } else if (sliceIndex === 15 && !trendingDisabled) { arr.push({ type: 'interstitialTrending', key: 'interstitial-' + sliceIndex + '-' + lastFetchedAt, @@ -403,7 +403,7 @@ let PostFeed = ({ feedTab, hasSession, showProgressIntersitial, - trendingDiscoverHidden, + trendingDisabled, ]) // events diff --git a/src/view/shell/desktop/SidebarTrendingTopics.tsx b/src/view/shell/desktop/SidebarTrendingTopics.tsx index 55324687f9..a50ea9719d 100644 --- a/src/view/shell/desktop/SidebarTrendingTopics.tsx +++ b/src/view/shell/desktop/SidebarTrendingTopics.tsx @@ -26,15 +26,15 @@ import {Text} from '#/components/Typography' export function SidebarTrendingTopics() { const {enabled} = useTrendingConfig() - const {trendingSidebarHidden} = useTrendingSettings() - return !enabled ? null : trendingSidebarHidden ? null : + const {trendingDisabled} = useTrendingSettings() + return !enabled ? null : trendingDisabled ? null : } function Inner() { const t = useTheme() const {_} = useLingui() const trendingPrompt = Prompt.usePromptControl() - const {setTrendingSidebarHidden} = useTrendingSettingsApi() + const {setTrendingDisabled} = useTrendingSettingsApi() const {data: trending, error, isLoading} = useTrendingTopics() const noTopics = !isLoading && !error && !trending?.topics?.length @@ -96,10 +96,10 @@ function Inner() { control={trendingPrompt} title={_(msg`Hide trending topics?`)} description={_( - msg`This is a device setting, and will apply to all accounts on this device. You can update this later from your settings.`, + msg`This will disable trending topics for all accounts on this device. You can update this later from your settings.`, )} confirmButtonCta={_(msg`Hide`)} - onConfirm={() => setTrendingSidebarHidden(true)} + onConfirm={() => setTrendingDisabled(true)} />