From 4382ba2a660baf19ad93ed589d9978b3f73b15a4 Mon Sep 17 00:00:00 2001 From: leo60228 Date: Thu, 12 Feb 2026 10:18:50 -0500 Subject: [PATCH] Add tweak to show Discover feedContext --- src/components/PostControls/DiscoverDebug.tsx | 5 +- src/screens/Settings/DeerSettings.tsx | 19 +++++++ src/state/persisted/schema.ts | 2 + .../preferences/discover-context-enabled.tsx | 55 +++++++++++++++++++ src/state/preferences/index.tsx | 13 ++++- 5 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/state/preferences/discover-context-enabled.tsx diff --git a/src/components/PostControls/DiscoverDebug.tsx b/src/components/PostControls/DiscoverDebug.tsx index e06c2d7a6..ed58faf28 100644 --- a/src/components/PostControls/DiscoverDebug.tsx +++ b/src/components/PostControls/DiscoverDebug.tsx @@ -3,6 +3,7 @@ import * as Clipboard from 'expo-clipboard' import {t} from '@lingui/macro' import {DISCOVER_DEBUG_DIDS} from '#/lib/constants' +import {useDiscoverContextEnabled} from '#/state/preferences/discover-context-enabled' import {useSession} from '#/state/session' import {atoms as a, useTheme} from '#/alf' import * as Toast from '#/components/Toast' @@ -17,10 +18,12 @@ export function DiscoverDebug({ }) { const ax = useAnalytics() const {currentAccount} = useSession() + const discoverContextEnabled = useDiscoverContextEnabled() const isDiscoverDebugUser = IS_INTERNAL || DISCOVER_DEBUG_DIDS[currentAccount?.did || ''] || - ax.features.enabled(ax.features.DebugFeedContext) + ax.features.enabled(ax.features.DebugFeedContext) || + discoverContextEnabled const theme = useTheme() return ( diff --git a/src/screens/Settings/DeerSettings.tsx b/src/screens/Settings/DeerSettings.tsx index 621a2a132..4222af5f9 100644 --- a/src/screens/Settings/DeerSettings.tsx +++ b/src/screens/Settings/DeerSettings.tsx @@ -73,6 +73,10 @@ import { useDisableViaRepostNotification, useSetDisableViaRepostNotification, } from '#/state/preferences/disable-via-repost-notification' +import { + useDiscoverContextEnabled, + useSetDiscoverContextEnabled, +} from '#/state/preferences/discover-context-enabled' import { useSetShowExternalShareButtons, useShowExternalShareButtons, @@ -514,6 +518,9 @@ export function DeerSettingsScreen({}: Props) { const disableComposerPrompt = useDisableComposerPrompt() const setDisableComposerPrompt = useSetDisableComposerPrompt() + const discoverContextEnabled = useDiscoverContextEnabled() + const setDiscoverContextEnabled = useSetDiscoverContextEnabled() + const disableLikesMetrics = useDisableLikesMetrics() const setDisableLikesMetrics = useSetDisableLikesMetrics() @@ -889,6 +896,18 @@ export function DeerSettingsScreen({}: Props) { access to features locked behind email verification. + + setDiscoverContextEnabled(value)} + style={[a.w_full]}> + + Show debug context for posts in Discover feed + + + diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index 7a6d9f939..ccfe8565a 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -158,6 +158,7 @@ const schema = z.object({ disableFollowedByMetrics: z.boolean().optional(), disablePostsMetrics: z.boolean().optional(), hideSimilarAccountsRecomm: z.boolean().optional(), + discoverContextEnabled: z.boolean().optional(), enableSquareAvatars: z.boolean().optional(), enableSquareButtons: z.boolean().optional(), disableVerifyEmailReminder: z.boolean().optional(), @@ -262,6 +263,7 @@ export const defaults: Schema = { disableFollowedByMetrics: false, disablePostsMetrics: false, hideSimilarAccountsRecomm: true, + discoverContextEnabled: false, enableSquareAvatars: true, enableSquareButtons: true, disableVerifyEmailReminder: false, diff --git a/src/state/preferences/discover-context-enabled.tsx b/src/state/preferences/discover-context-enabled.tsx new file mode 100644 index 000000000..90943ff0d --- /dev/null +++ b/src/state/preferences/discover-context-enabled.tsx @@ -0,0 +1,55 @@ +import React from 'react' + +import * as persisted from '#/state/persisted' + +// Preference: discoverContextEnabled – when true, shows debug context for discover feed + +type StateContext = persisted.Schema['discoverContextEnabled'] +// Same setter signature used across other preference modules +type SetContext = (v: persisted.Schema['discoverContextEnabled']) => void + +const stateContext = React.createContext( + persisted.defaults.discoverContextEnabled, +) +const setContext = React.createContext( + (_: persisted.Schema['discoverContextEnabled']) => {}, +) + +export function Provider({children}: React.PropsWithChildren<{}>) { + const [state, setState] = React.useState( + persisted.get('discoverContextEnabled'), + ) + + const setStateWrapped = React.useCallback( + (discoverContextEnabled: persisted.Schema['discoverContextEnabled']) => { + setState(discoverContextEnabled) + persisted.write('discoverContextEnabled', discoverContextEnabled) + }, + [setState], + ) + + React.useEffect(() => { + return persisted.onUpdate( + 'discoverContextEnabled', + nextDiscoverContextEnabled => { + setState(nextDiscoverContextEnabled) + }, + ) + }, [setStateWrapped]) + + return ( + + + {children} + + + ) +} + +export function useDiscoverContextEnabled() { + return React.useContext(stateContext) +} + +export function useSetDiscoverContextEnabled() { + return React.useContext(setContext) +} diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx index c42eb0a86..a078d4695 100644 --- a/src/state/preferences/index.tsx +++ b/src/state/preferences/index.tsx @@ -19,6 +19,7 @@ import {Provider as DisableRepostsMetricsProvider} from './disable-reposts-metri import {Provider as DisableSavesMetricsProvider} from './disable-saves-metrics' import {Provider as DisableVerifyEmailReminderProvider} from './disable-verify-email-reminder' import {Provider as DisableViaRepostNotificationProvider} from './disable-via-repost-notification' +import {Provider as DiscoverContextEnabledProvider} from './discover-context-enabled' import {Provider as EnableSquareAvatarsProvider} from './enable-square-avatars' import {Provider as EnableSquareButtonsProvider} from './enable-square-buttons' import {Provider as ExternalEmbedsProvider} from './external-embeds-prefs' @@ -53,6 +54,10 @@ export { useSetDisableComposerPrompt, } from './disable-composer-prompt' export {useHapticsDisabled, useSetHapticsDisabled} from './disable-haptics' +export { + useDiscoverContextEnabled, + useSetDiscoverContextEnabled, +} from './discover-context-enabled' export { useExternalEmbedsPrefs, useSetExternalEmbedPref, @@ -115,9 +120,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) { - { - children - } + + { + children + } + -- 2.51.2