Option for large alt badges (#4571)
* add pref for large alt badge * add to settings * do the large badge bit * Tweak wording --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
This commit is contained in:
parent
22c5aa4da4
commit
0f931933a7
9 changed files with 113 additions and 43 deletions
|
@ -1,4 +1,5 @@
|
|||
import React from 'react'
|
||||
|
||||
import * as persisted from '#/state/persisted'
|
||||
|
||||
type StateContext = persisted.Schema['requireAltTextEnabled']
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React from 'react'
|
||||
|
||||
import * as persisted from '#/state/persisted'
|
||||
|
||||
type SetStateCb = (
|
||||
|
|
|
@ -8,6 +8,7 @@ import {Provider as HiddenPostsProvider} from './hidden-posts'
|
|||
import {Provider as InAppBrowserProvider} from './in-app-browser'
|
||||
import {Provider as KawaiiProvider} from './kawaii'
|
||||
import {Provider as LanguagesProvider} from './languages'
|
||||
import {Provider as LargeAltBadgeProvider} from './large-alt-badge'
|
||||
|
||||
export {
|
||||
useRequireAltTextEnabled,
|
||||
|
@ -27,17 +28,19 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
return (
|
||||
<LanguagesProvider>
|
||||
<AltTextRequiredProvider>
|
||||
<ExternalEmbedsProvider>
|
||||
<HiddenPostsProvider>
|
||||
<InAppBrowserProvider>
|
||||
<DisableHapticsProvider>
|
||||
<AutoplayProvider>
|
||||
<KawaiiProvider>{children}</KawaiiProvider>
|
||||
</AutoplayProvider>
|
||||
</DisableHapticsProvider>
|
||||
</InAppBrowserProvider>
|
||||
</HiddenPostsProvider>
|
||||
</ExternalEmbedsProvider>
|
||||
<LargeAltBadgeProvider>
|
||||
<ExternalEmbedsProvider>
|
||||
<HiddenPostsProvider>
|
||||
<InAppBrowserProvider>
|
||||
<DisableHapticsProvider>
|
||||
<AutoplayProvider>
|
||||
<KawaiiProvider>{children}</KawaiiProvider>
|
||||
</AutoplayProvider>
|
||||
</DisableHapticsProvider>
|
||||
</InAppBrowserProvider>
|
||||
</HiddenPostsProvider>
|
||||
</ExternalEmbedsProvider>
|
||||
</LargeAltBadgeProvider>
|
||||
</AltTextRequiredProvider>
|
||||
</LanguagesProvider>
|
||||
)
|
||||
|
|
49
src/state/preferences/large-alt-badge.tsx
Normal file
49
src/state/preferences/large-alt-badge.tsx
Normal file
|
@ -0,0 +1,49 @@
|
|||
import React from 'react'
|
||||
|
||||
import * as persisted from '#/state/persisted'
|
||||
|
||||
type StateContext = persisted.Schema['largeAltBadgeEnabled']
|
||||
type SetContext = (v: persisted.Schema['largeAltBadgeEnabled']) => void
|
||||
|
||||
const stateContext = React.createContext<StateContext>(
|
||||
persisted.defaults.largeAltBadgeEnabled,
|
||||
)
|
||||
const setContext = React.createContext<SetContext>(
|
||||
(_: persisted.Schema['largeAltBadgeEnabled']) => {},
|
||||
)
|
||||
|
||||
export function Provider({children}: React.PropsWithChildren<{}>) {
|
||||
const [state, setState] = React.useState(
|
||||
persisted.get('largeAltBadgeEnabled'),
|
||||
)
|
||||
|
||||
const setStateWrapped = React.useCallback(
|
||||
(largeAltBadgeEnabled: persisted.Schema['largeAltBadgeEnabled']) => {
|
||||
setState(largeAltBadgeEnabled)
|
||||
persisted.write('largeAltBadgeEnabled', largeAltBadgeEnabled)
|
||||
},
|
||||
[setState],
|
||||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('largeAltBadgeEnabled'))
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
return (
|
||||
<stateContext.Provider value={state}>
|
||||
<setContext.Provider value={setStateWrapped}>
|
||||
{children}
|
||||
</setContext.Provider>
|
||||
</stateContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
export function useLargeAltBadgeEnabled() {
|
||||
return React.useContext(stateContext)
|
||||
}
|
||||
|
||||
export function useSetLargeAltBadgeEnabled() {
|
||||
return React.useContext(setContext)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue