Bluesky app fork with some witchin' additions 💫

change Github mentions to Tangled & add files missing from PR

add preferences for disable metrics (tangled 💢)

xan.lol 7b5fc0cf acbbc1c9

verified
+1 -1
src/screens/Signup/index.tsx
··· 231 231 label={_(msg`Contact support`)} 232 232 to={FEEDBACK_FORM_URL({email: state.email})} 233 233 style={[!gtMobile && a.text_md]}> 234 - <Trans>Open a Github Issue</Trans> 234 + <Trans>Open a Tangled Issue</Trans> 235 235 </InlineLinkText> 236 236 </Text> 237 237 </View>
+52
src/state/preferences/disable-followed-by-metrics.tsx
··· 1 + import React from 'react' 2 + 3 + import * as persisted from '#/state/persisted' 4 + 5 + // Preference: disableFollowedByMetrics – when true, disables following metrics on profiles 6 + 7 + type StateContext = persisted.Schema['disableFollowedByMetrics'] 8 + // Same setter signature used across other preference modules 9 + type SetContext = (v: persisted.Schema['disableFollowedByMetrics']) => void 10 + 11 + const stateContext = React.createContext<StateContext>( 12 + persisted.defaults.disableFollowedByMetrics, 13 + ) 14 + const setContext = React.createContext<SetContext>( 15 + (_: persisted.Schema['disableFollowedByMetrics']) => {}, 16 + ) 17 + 18 + export function Provider({children}: React.PropsWithChildren<{}>) { 19 + const [state, setState] = React.useState( 20 + persisted.get('disableFollowedByMetrics'), 21 + ) 22 + 23 + const setStateWrapped = React.useCallback( 24 + (value: persisted.Schema['disableFollowedByMetrics']) => { 25 + setState(value) 26 + persisted.write('disableFollowedByMetrics', value) 27 + }, 28 + [setState], 29 + ) 30 + 31 + React.useEffect(() => { 32 + return persisted.onUpdate('disableFollowedByMetrics', next => { 33 + setState(next) 34 + }) 35 + }, [setStateWrapped]) 36 + 37 + return ( 38 + <stateContext.Provider value={state}> 39 + <setContext.Provider value={setStateWrapped}> 40 + {children} 41 + </setContext.Provider> 42 + </stateContext.Provider> 43 + ) 44 + } 45 + 46 + export function useDisableFollowedByMetrics() { 47 + return React.useContext(stateContext) 48 + } 49 + 50 + export function useSetDisableFollowedByMetrics() { 51 + return React.useContext(setContext) 52 + }
+52
src/state/preferences/disable-followers-metrics.tsx
··· 1 + import React from 'react' 2 + 3 + import * as persisted from '#/state/persisted' 4 + 5 + // Preference: disableFollowersMetrics – when true, disables followers metrics on profiles 6 + 7 + type StateContext = persisted.Schema['disableFollowersMetrics'] 8 + // Same setter signature used across other preference modules 9 + type SetContext = (v: persisted.Schema['disableFollowersMetrics']) => void 10 + 11 + const stateContext = React.createContext<StateContext>( 12 + persisted.defaults.disableFollowersMetrics, 13 + ) 14 + const setContext = React.createContext<SetContext>( 15 + (_: persisted.Schema['disableFollowersMetrics']) => {}, 16 + ) 17 + 18 + export function Provider({children}: React.PropsWithChildren<{}>) { 19 + const [state, setState] = React.useState( 20 + persisted.get('disableFollowersMetrics'), 21 + ) 22 + 23 + const setStateWrapped = React.useCallback( 24 + (value: persisted.Schema['disableFollowersMetrics']) => { 25 + setState(value) 26 + persisted.write('disableFollowersMetrics', value) 27 + }, 28 + [setState], 29 + ) 30 + 31 + React.useEffect(() => { 32 + return persisted.onUpdate('disableFollowersMetrics', next => { 33 + setState(next) 34 + }) 35 + }, [setStateWrapped]) 36 + 37 + return ( 38 + <stateContext.Provider value={state}> 39 + <setContext.Provider value={setStateWrapped}> 40 + {children} 41 + </setContext.Provider> 42 + </stateContext.Provider> 43 + ) 44 + } 45 + 46 + export function useDisableFollowersMetrics() { 47 + return React.useContext(stateContext) 48 + } 49 + 50 + export function useSetDisableFollowersMetrics() { 51 + return React.useContext(setContext) 52 + }
+52
src/state/preferences/disable-following-metrics.tsx
··· 1 + import React from 'react' 2 + 3 + import * as persisted from '#/state/persisted' 4 + 5 + // Preference: disableFollowingMetrics – when true, disables following metrics on profiles 6 + 7 + type StateContext = persisted.Schema['disableFollowingMetrics'] 8 + // Same setter signature used across other preference modules 9 + type SetContext = (v: persisted.Schema['disableFollowingMetrics']) => void 10 + 11 + const stateContext = React.createContext<StateContext>( 12 + persisted.defaults.disableFollowingMetrics, 13 + ) 14 + const setContext = React.createContext<SetContext>( 15 + (_: persisted.Schema['disableFollowingMetrics']) => {}, 16 + ) 17 + 18 + export function Provider({children}: React.PropsWithChildren<{}>) { 19 + const [state, setState] = React.useState( 20 + persisted.get('disableFollowingMetrics'), 21 + ) 22 + 23 + const setStateWrapped = React.useCallback( 24 + (value: persisted.Schema['disableFollowingMetrics']) => { 25 + setState(value) 26 + persisted.write('disableFollowingMetrics', value) 27 + }, 28 + [setState], 29 + ) 30 + 31 + React.useEffect(() => { 32 + return persisted.onUpdate('disableFollowingMetrics', next => { 33 + setState(next) 34 + }) 35 + }, [setStateWrapped]) 36 + 37 + return ( 38 + <stateContext.Provider value={state}> 39 + <setContext.Provider value={setStateWrapped}> 40 + {children} 41 + </setContext.Provider> 42 + </stateContext.Provider> 43 + ) 44 + } 45 + 46 + export function useDisableFollowingMetrics() { 47 + return React.useContext(stateContext) 48 + } 49 + 50 + export function useSetDisableFollowingMetrics() { 51 + return React.useContext(setContext) 52 + }
+50
src/state/preferences/disable-posts-metrics.tsx
··· 1 + import React from 'react' 2 + 3 + import * as persisted from '#/state/persisted' 4 + 5 + // Preference: disablePostsMetrics – when true, disables posts metrics on profiles 6 + 7 + type StateContext = persisted.Schema['disablePostsMetrics'] 8 + // Same setter signature used across other preference modules 9 + type SetContext = (v: persisted.Schema['disablePostsMetrics']) => void 10 + 11 + const stateContext = React.createContext<StateContext>( 12 + persisted.defaults.disablePostsMetrics, 13 + ) 14 + const setContext = React.createContext<SetContext>( 15 + (_: persisted.Schema['disablePostsMetrics']) => {}, 16 + ) 17 + 18 + export function Provider({children}: React.PropsWithChildren<{}>) { 19 + const [state, setState] = React.useState(persisted.get('disablePostsMetrics')) 20 + 21 + const setStateWrapped = React.useCallback( 22 + (value: persisted.Schema['disablePostsMetrics']) => { 23 + setState(value) 24 + persisted.write('disablePostsMetrics', value) 25 + }, 26 + [setState], 27 + ) 28 + 29 + React.useEffect(() => { 30 + return persisted.onUpdate('disablePostsMetrics', next => { 31 + setState(next) 32 + }) 33 + }, [setStateWrapped]) 34 + 35 + return ( 36 + <stateContext.Provider value={state}> 37 + <setContext.Provider value={setStateWrapped}> 38 + {children} 39 + </setContext.Provider> 40 + </stateContext.Provider> 41 + ) 42 + } 43 + 44 + export function useDisablePostsMetrics() { 45 + return React.useContext(stateContext) 46 + } 47 + 48 + export function useSetDisablePostsMetrics() { 49 + return React.useContext(setContext) 50 + }
+1 -1
src/view/com/auth/SplashScreen.web.tsx
··· 171 171 <InlineLinkText 172 172 label={_(msg`Read the patches and contribute`)} 173 173 to="https://tangled.org/jollywhoppers.com/witchsky.app/"> 174 - <Trans>Github</Trans> 174 + <Trans>Tangled</Trans> 175 175 </InlineLinkText> 176 176 177 177 <View style={a.flex_1} />
+1 -1
witchsky-static-about/index.html
··· 19 19 window.location.href = "https://tangled.org/jollywhoppers.com/witchsky.app/"; 20 20 </script> 21 21 <body> 22 - <h1>Redirecting to GitHub README...</h1> 22 + <h1>Redirecting to Tangled README...</h1> 23 23 </body> 24 24 </html>