Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client
122
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add tweak to show Discover feedContext

authored by

leo60228 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>