From 5eadadffbf5475b233da7b1463e2345ff3e3cfce Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 8 Nov 2023 09:46:07 -0800 Subject: 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 --- src/state/models/ui/shell.ts | 7 +---- src/state/preferences/alt-text-required.tsx | 48 +++++++++++++++++++++++++++++ src/state/preferences/index.tsx | 11 ++++++- src/state/shell/alt-text-required.tsx | 48 ----------------------------- src/state/shell/index.tsx | 9 +----- src/state/shell/reminders.e2e.ts | 6 +--- src/state/shell/reminders.ts | 9 ++---- src/view/com/composer/Composer.tsx | 2 +- src/view/screens/Settings.tsx | 6 ++-- 9 files changed, 69 insertions(+), 77 deletions(-) create mode 100644 src/state/preferences/alt-text-required.tsx delete mode 100644 src/state/shell/alt-text-required.tsx (limited to 'src') diff --git a/src/state/models/ui/shell.ts b/src/state/models/ui/shell.ts index 343fff86d..b5fa4e591 100644 --- a/src/state/models/ui/shell.ts +++ b/src/state/models/ui/shell.ts @@ -362,12 +362,7 @@ export class ShellUiModel { setupLoginModals() { this.rootStore.onSessionReady(() => { - if ( - shouldRequestEmailConfirmation( - this.rootStore.session, - this.rootStore.onboarding, - ) - ) { + if (shouldRequestEmailConfirmation(this.rootStore.session)) { this.openModal({name: 'verify-email', showReminder: true}) setEmailConfirmationRequested() } diff --git a/src/state/preferences/alt-text-required.tsx b/src/state/preferences/alt-text-required.tsx new file mode 100644 index 000000000..81de9e006 --- /dev/null +++ b/src/state/preferences/alt-text-required.tsx @@ -0,0 +1,48 @@ +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( + persisted.defaults.requireAltTextEnabled, +) +const setContext = React.createContext( + (_: 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 ( + + + {children} + + + ) +} + +export function useRequireAltTextEnabled() { + return React.useContext(stateContext) +} + +export function useSetRequireAltTextEnabled() { + return React.useContext(setContext) +} diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx index 56c93f812..50cb86c65 100644 --- a/src/state/preferences/index.tsx +++ b/src/state/preferences/index.tsx @@ -1,8 +1,17 @@ import React from 'react' import {Provider as LanguagesProvider} from './languages' +import {Provider as AltTextRequiredProvider} from '../preferences/alt-text-required' export {useLanguagePrefs, useSetLanguagePrefs} from './languages' +export { + useRequireAltTextEnabled, + useSetRequireAltTextEnabled, +} from './alt-text-required' export function Provider({children}: React.PropsWithChildren<{}>) { - return {children} + return ( + + {children} + + ) } diff --git a/src/state/shell/alt-text-required.tsx b/src/state/shell/alt-text-required.tsx deleted file mode 100644 index 81de9e006..000000000 --- a/src/state/shell/alt-text-required.tsx +++ /dev/null @@ -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( - persisted.defaults.requireAltTextEnabled, -) -const setContext = React.createContext( - (_: 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 ( - - - {children} - - - ) -} - -export function useRequireAltTextEnabled() { - return React.useContext(stateContext) -} - -export function useSetRequireAltTextEnabled() { - return React.useContext(setContext) -} diff --git a/src/state/shell/index.tsx b/src/state/shell/index.tsx index 0bb8988a6..6291d3224 100644 --- a/src/state/shell/index.tsx +++ b/src/state/shell/index.tsx @@ -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<{}>) { - - {children} - + {children} diff --git a/src/state/shell/reminders.e2e.ts b/src/state/shell/reminders.e2e.ts index 6238ffa29..d7703e9e0 100644 --- a/src/state/shell/reminders.e2e.ts +++ b/src/state/shell/reminders.e2e.ts @@ -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 } diff --git a/src/state/shell/reminders.ts b/src/state/shell/reminders.ts index d68a272ac..e7ee7a5fe 100644 --- a/src/state/shell/reminders.ts +++ b/src/state/shell/reminders.ts @@ -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 diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx index 4ebbfd666..632e72fde 100644 --- a/src/view/com/composer/Composer.tsx +++ b/src/view/com/composer/Composer.tsx @@ -49,7 +49,7 @@ import {LabelsBtn} from './labels/LabelsBtn' import {SelectLangBtn} from './select-language/SelectLangBtn' import {EmojiPickerButton} from './text-input/web/EmojiPicker.web' import {insertMentionAt} from 'lib/strings/mention-manip' -import {useRequireAltTextEnabled} from '#/state/shell' +import {useRequireAltTextEnabled} from '#/state/preferences' import { useLanguagePrefs, useSetLanguagePrefs, diff --git a/src/view/screens/Settings.tsx b/src/view/screens/Settings.tsx index 37c2961b4..570f8b7e0 100644 --- a/src/view/screens/Settings.tsx +++ b/src/view/screens/Settings.tsx @@ -50,10 +50,12 @@ import { useSetMinimalShellMode, useColorMode, useSetColorMode, - useRequireAltTextEnabled, - useSetRequireAltTextEnabled, useOnboardingDispatch, } from '#/state/shell' +import { + useRequireAltTextEnabled, + useSetRequireAltTextEnabled, +} from '#/state/preferences' // TEMPORARY (APP-700) // remove after backend testing finishes -- cgit 1.4.1