Bluesky app fork with some witchin' additions 💫

Add tweak to show Discover feedContext

authored by vriska.bsky.social and committed by tangled.org 4382ba2a 7a6e9d0f

+90 -4
+4 -1
src/components/PostControls/DiscoverDebug.tsx
··· 3 3 import {t} from '@lingui/macro' 4 4 5 5 import {DISCOVER_DEBUG_DIDS} from '#/lib/constants' 6 + import {useDiscoverContextEnabled} from '#/state/preferences/discover-context-enabled' 6 7 import {useSession} from '#/state/session' 7 8 import {atoms as a, useTheme} from '#/alf' 8 9 import * as Toast from '#/components/Toast' ··· 17 18 }) { 18 19 const ax = useAnalytics() 19 20 const {currentAccount} = useSession() 21 + const discoverContextEnabled = useDiscoverContextEnabled() 20 22 const isDiscoverDebugUser = 21 23 IS_INTERNAL || 22 24 DISCOVER_DEBUG_DIDS[currentAccount?.did || ''] || 23 - ax.features.enabled(ax.features.DebugFeedContext) 25 + ax.features.enabled(ax.features.DebugFeedContext) || 26 + discoverContextEnabled 24 27 const theme = useTheme() 25 28 26 29 return (
+19
src/screens/Settings/DeerSettings.tsx
··· 74 74 useSetDisableViaRepostNotification, 75 75 } from '#/state/preferences/disable-via-repost-notification' 76 76 import { 77 + useDiscoverContextEnabled, 78 + useSetDiscoverContextEnabled, 79 + } from '#/state/preferences/discover-context-enabled' 80 + import { 77 81 useSetShowExternalShareButtons, 78 82 useShowExternalShareButtons, 79 83 } from '#/state/preferences/external-share-buttons' ··· 514 518 const disableComposerPrompt = useDisableComposerPrompt() 515 519 const setDisableComposerPrompt = useSetDisableComposerPrompt() 516 520 521 + const discoverContextEnabled = useDiscoverContextEnabled() 522 + const setDiscoverContextEnabled = useSetDiscoverContextEnabled() 523 + 517 524 const disableLikesMetrics = useDisableLikesMetrics() 518 525 const setDisableLikesMetrics = useSetDisableLikesMetrics() 519 526 ··· 889 896 access to features locked behind email verification. 890 897 </Trans> 891 898 </Admonition> 899 + 900 + <Toggle.Item 901 + name="discover_context" 902 + label={_(msg`Show debug context for posts in Discover feed`)} 903 + value={discoverContextEnabled} 904 + onChange={value => setDiscoverContextEnabled(value)} 905 + style={[a.w_full]}> 906 + <Toggle.LabelText style={[a.flex_1]}> 907 + <Trans>Show debug context for posts in Discover feed</Trans> 908 + </Toggle.LabelText> 909 + <Toggle.Platform /> 910 + </Toggle.Item> 892 911 </SettingsList.Group> 893 912 894 913 <SettingsList.Divider />
+2
src/state/persisted/schema.ts
··· 158 158 disableFollowedByMetrics: z.boolean().optional(), 159 159 disablePostsMetrics: z.boolean().optional(), 160 160 hideSimilarAccountsRecomm: z.boolean().optional(), 161 + discoverContextEnabled: z.boolean().optional(), 161 162 enableSquareAvatars: z.boolean().optional(), 162 163 enableSquareButtons: z.boolean().optional(), 163 164 disableVerifyEmailReminder: z.boolean().optional(), ··· 262 263 disableFollowedByMetrics: false, 263 264 disablePostsMetrics: false, 264 265 hideSimilarAccountsRecomm: true, 266 + discoverContextEnabled: false, 265 267 enableSquareAvatars: true, 266 268 enableSquareButtons: true, 267 269 disableVerifyEmailReminder: false,
+55
src/state/preferences/discover-context-enabled.tsx
··· 1 + import React from 'react' 2 + 3 + import * as persisted from '#/state/persisted' 4 + 5 + // Preference: discoverContextEnabled – when true, shows debug context for discover feed 6 + 7 + type StateContext = persisted.Schema['discoverContextEnabled'] 8 + // Same setter signature used across other preference modules 9 + type SetContext = (v: persisted.Schema['discoverContextEnabled']) => void 10 + 11 + const stateContext = React.createContext<StateContext>( 12 + persisted.defaults.discoverContextEnabled, 13 + ) 14 + const setContext = React.createContext<SetContext>( 15 + (_: persisted.Schema['discoverContextEnabled']) => {}, 16 + ) 17 + 18 + export function Provider({children}: React.PropsWithChildren<{}>) { 19 + const [state, setState] = React.useState( 20 + persisted.get('discoverContextEnabled'), 21 + ) 22 + 23 + const setStateWrapped = React.useCallback( 24 + (discoverContextEnabled: persisted.Schema['discoverContextEnabled']) => { 25 + setState(discoverContextEnabled) 26 + persisted.write('discoverContextEnabled', discoverContextEnabled) 27 + }, 28 + [setState], 29 + ) 30 + 31 + React.useEffect(() => { 32 + return persisted.onUpdate( 33 + 'discoverContextEnabled', 34 + nextDiscoverContextEnabled => { 35 + setState(nextDiscoverContextEnabled) 36 + }, 37 + ) 38 + }, [setStateWrapped]) 39 + 40 + return ( 41 + <stateContext.Provider value={state}> 42 + <setContext.Provider value={setStateWrapped}> 43 + {children} 44 + </setContext.Provider> 45 + </stateContext.Provider> 46 + ) 47 + } 48 + 49 + export function useDiscoverContextEnabled() { 50 + return React.useContext(stateContext) 51 + } 52 + 53 + export function useSetDiscoverContextEnabled() { 54 + return React.useContext(setContext) 55 + }
+10 -3
src/state/preferences/index.tsx
··· 19 19 import {Provider as DisableSavesMetricsProvider} from './disable-saves-metrics' 20 20 import {Provider as DisableVerifyEmailReminderProvider} from './disable-verify-email-reminder' 21 21 import {Provider as DisableViaRepostNotificationProvider} from './disable-via-repost-notification' 22 + import {Provider as DiscoverContextEnabledProvider} from './discover-context-enabled' 22 23 import {Provider as EnableSquareAvatarsProvider} from './enable-square-avatars' 23 24 import {Provider as EnableSquareButtonsProvider} from './enable-square-buttons' 24 25 import {Provider as ExternalEmbedsProvider} from './external-embeds-prefs' ··· 53 54 useSetDisableComposerPrompt, 54 55 } from './disable-composer-prompt' 55 56 export {useHapticsDisabled, useSetHapticsDisabled} from './disable-haptics' 57 + export { 58 + useDiscoverContextEnabled, 59 + useSetDiscoverContextEnabled, 60 + } from './discover-context-enabled' 56 61 export { 57 62 useExternalEmbedsPrefs, 58 63 useSetExternalEmbedPref, ··· 115 120 <DisableVerifyEmailReminderProvider> 116 121 <TranslationServicePreferenceProvider> 117 122 <DisableComposerPromptProvider> 118 - { 119 - children 120 - } 123 + <DiscoverContextEnabledProvider> 124 + { 125 + children 126 + } 127 + </DiscoverContextEnabledProvider> 121 128 </DisableComposerPromptProvider> 122 129 </TranslationServicePreferenceProvider> 123 130 </DisableVerifyEmailReminderProvider>