State layer cleanup: move alt-text-required into preferences and fix a bug in reminders (#1845)

* Move alt-text-required into preferences

* Fix bug: reminders now using new onboarding state
This commit is contained in:
Paul Frazee 2023-11-08 09:46:07 -08:00 committed by GitHub
parent 5843e212c0
commit 5eadadffbf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 21 additions and 29 deletions

View file

@ -1,48 +0,0 @@
import React from 'react'
import * as persisted from '#/state/persisted'
type StateContext = persisted.Schema['requireAltTextEnabled']
type SetContext = (v: persisted.Schema['requireAltTextEnabled']) => void
const stateContext = React.createContext<StateContext>(
persisted.defaults.requireAltTextEnabled,
)
const setContext = React.createContext<SetContext>(
(_: persisted.Schema['requireAltTextEnabled']) => {},
)
export function Provider({children}: React.PropsWithChildren<{}>) {
const [state, setState] = React.useState(
persisted.get('requireAltTextEnabled'),
)
const setStateWrapped = React.useCallback(
(requireAltTextEnabled: persisted.Schema['requireAltTextEnabled']) => {
setState(requireAltTextEnabled)
persisted.write('requireAltTextEnabled', requireAltTextEnabled)
},
[setState],
)
React.useEffect(() => {
return persisted.onUpdate(() => {
setState(persisted.get('requireAltTextEnabled'))
})
}, [setStateWrapped])
return (
<stateContext.Provider value={state}>
<setContext.Provider value={setStateWrapped}>
{children}
</setContext.Provider>
</stateContext.Provider>
)
}
export function useRequireAltTextEnabled() {
return React.useContext(stateContext)
}
export function useSetRequireAltTextEnabled() {
return React.useContext(setContext)
}

View file

@ -3,7 +3,6 @@ import {Provider as DrawerOpenProvider} from './drawer-open'
import {Provider as DrawerSwipableProvider} from './drawer-swipe-disabled'
import {Provider as MinimalModeProvider} from './minimal-mode'
import {Provider as ColorModeProvider} from './color-mode'
import {Provider as AltTextRequiredProvider} from './alt-text-required'
import {Provider as OnboardingProvider} from './onboarding'
export {useIsDrawerOpen, useSetDrawerOpen} from './drawer-open'
@ -13,10 +12,6 @@ export {
} from './drawer-swipe-disabled'
export {useMinimalShellMode, useSetMinimalShellMode} from './minimal-mode'
export {useColorMode, useSetColorMode} from './color-mode'
export {
useRequireAltTextEnabled,
useSetRequireAltTextEnabled,
} from './alt-text-required'
export {useOnboardingState, useOnboardingDispatch} from './onboarding'
export function Provider({children}: React.PropsWithChildren<{}>) {
@ -25,9 +20,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
<DrawerSwipableProvider>
<MinimalModeProvider>
<ColorModeProvider>
<OnboardingProvider>
<AltTextRequiredProvider>{children}</AltTextRequiredProvider>
</OnboardingProvider>
<OnboardingProvider>{children}</OnboardingProvider>
</ColorModeProvider>
</MinimalModeProvider>
</DrawerSwipableProvider>

View file

@ -1,10 +1,6 @@
import {OnboardingModel} from '../models/discovery/onboarding'
import {SessionModel} from '../models/session'
export function shouldRequestEmailConfirmation(
_session: SessionModel,
_onboarding: OnboardingModel,
) {
export function shouldRequestEmailConfirmation(_session: SessionModel) {
return false
}

View file

@ -1,12 +1,9 @@
import * as persisted from '#/state/persisted'
import {OnboardingModel} from '../models/discovery/onboarding'
import {SessionModel} from '../models/session'
import {toHashCode} from 'lib/strings/helpers'
import {isOnboardingActive} from './onboarding'
export function shouldRequestEmailConfirmation(
session: SessionModel,
onboarding: OnboardingModel,
) {
export function shouldRequestEmailConfirmation(session: SessionModel) {
const sess = session.currentSession
if (!sess) {
return false
@ -14,7 +11,7 @@ export function shouldRequestEmailConfirmation(
if (sess.emailConfirmed) {
return false
}
if (onboarding.isActive) {
if (isOnboardingActive()) {
return false
}
// only prompt once