diff options
author | Eric Bailey <git@esb.lol> | 2023-11-08 12:34:10 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-08 10:34:10 -0800 |
commit | f18b15241ab708f8c25a11937a875e361e9f1221 (patch) | |
tree | 07829ce8617cb858b4519d6f16c89c7e43f84d9c /src/view/shell | |
parent | 5eadadffbf5475b233da7b1463e2345ff3e3cfce (diff) | |
download | voidsky-f18b15241ab708f8c25a11937a875e361e9f1221.tar.zst |
Add modal state provider, replace usage except methods (#1833)
* Add modal state provider, replace usage except methods * Replace easy spots * Fix sticky spots * Replace final usages * Memorize context objects * Add more warnings
Diffstat (limited to 'src/view/shell')
-rw-r--r-- | src/view/shell/Drawer.tsx | 6 | ||||
-rw-r--r-- | src/view/shell/bottom-bar/BottomBar.tsx | 6 | ||||
-rw-r--r-- | src/view/shell/desktop/RightNav.tsx | 6 | ||||
-rw-r--r-- | src/view/shell/index.tsx | 5 | ||||
-rw-r--r-- | src/view/shell/index.web.tsx | 5 |
5 files changed, 20 insertions, 8 deletions
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx index 7f5e6c5e5..c8b3e0917 100644 --- a/src/view/shell/Drawer.tsx +++ b/src/view/shell/Drawer.tsx @@ -44,6 +44,7 @@ import {useNavigationTabState} from 'lib/hooks/useNavigationTabState' import {isWeb} from 'platform/detection' import {formatCount, formatCountShortOnly} from 'view/com/util/numeric/format' import {useSetDrawerOpen} from '#/state/shell' +import {useModalControls} from '#/state/modals' export const DrawerContent = observer(function DrawerContentImpl() { const theme = useTheme() @@ -442,11 +443,12 @@ const InviteCodes = observer(function InviteCodesImpl({ const setDrawerOpen = useSetDrawerOpen() const pal = usePalette('default') const {invitesAvailable} = store.me + const {openModal} = useModalControls() const onPress = React.useCallback(() => { track('Menu:ItemClicked', {url: '#invite-codes'}) setDrawerOpen(false) - store.shell.openModal({name: 'invite-codes'}) - }, [store, track, setDrawerOpen]) + openModal({name: 'invite-codes'}) + }, [openModal, track, setDrawerOpen]) return ( <TouchableOpacity testID="menuItemInviteCodes" diff --git a/src/view/shell/bottom-bar/BottomBar.tsx b/src/view/shell/bottom-bar/BottomBar.tsx index d360ceead..fedfcdfca 100644 --- a/src/view/shell/bottom-bar/BottomBar.tsx +++ b/src/view/shell/bottom-bar/BottomBar.tsx @@ -24,12 +24,14 @@ import {styles} from './BottomBarStyles' import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' import {useNavigationTabState} from 'lib/hooks/useNavigationTabState' import {UserAvatar} from 'view/com/util/UserAvatar' +import {useModalControls} from '#/state/modals' type TabOptions = 'Home' | 'Search' | 'Notifications' | 'MyProfile' | 'Feeds' export const BottomBar = observer(function BottomBarImpl({ navigation, }: BottomTabBarProps) { + const {openModal} = useModalControls() const store = useStores() const pal = usePalette('default') const safeAreaInsets = useSafeAreaInsets() @@ -72,8 +74,8 @@ export const BottomBar = observer(function BottomBarImpl({ onPressTab('MyProfile') }, [onPressTab]) const onLongPressProfile = React.useCallback(() => { - store.shell.openModal({name: 'switch-account'}) - }, [store]) + openModal({name: 'switch-account'}) + }, [openModal]) return ( <Animated.View diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx index 84d7d7854..a4b3e5746 100644 --- a/src/view/shell/desktop/RightNav.tsx +++ b/src/view/shell/desktop/RightNav.tsx @@ -13,6 +13,7 @@ import {useStores} from 'state/index' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {pluralize} from 'lib/strings/helpers' import {formatCount} from 'view/com/util/numeric/format' +import {useModalControls} from '#/state/modals' export const DesktopRightNav = observer(function DesktopRightNavImpl() { const store = useStores() @@ -83,12 +84,13 @@ export const DesktopRightNav = observer(function DesktopRightNavImpl() { const InviteCodes = observer(function InviteCodesImpl() { const store = useStores() const pal = usePalette('default') + const {openModal} = useModalControls() const {invitesAvailable} = store.me const onPress = React.useCallback(() => { - store.shell.openModal({name: 'invite-codes'}) - }, [store]) + openModal({name: 'invite-codes'}) + }, [openModal]) return ( <TouchableOpacity style={[styles.inviteCodes, pal.border]} diff --git a/src/view/shell/index.tsx b/src/view/shell/index.tsx index 703edf27a..498bc11bd 100644 --- a/src/view/shell/index.tsx +++ b/src/view/shell/index.tsx @@ -32,12 +32,14 @@ import { useIsDrawerSwipeDisabled, } from '#/state/shell' import {isAndroid} from 'platform/detection' +import {useModalControls} from '#/state/modals' const ShellInner = observer(function ShellInnerImpl() { const store = useStores() const isDrawerOpen = useIsDrawerOpen() const isDrawerSwipeDisabled = useIsDrawerSwipeDisabled() const setIsDrawerOpen = useSetDrawerOpen() + const {closeModal} = useModalControls() useOTAUpdate() // this hook polls for OTA updates every few seconds const winDim = useWindowDimensions() const safeAreaInsets = useSafeAreaInsets() @@ -60,13 +62,14 @@ const ShellInner = observer(function ShellInnerImpl() { if (isAndroid) { listener = BackHandler.addEventListener('hardwareBackPress', () => { setIsDrawerOpen(false) + closeModal() return store.shell.closeAnyActiveElement() }) } return () => { listener.remove() } - }, [store, setIsDrawerOpen]) + }, [store, setIsDrawerOpen, closeModal]) return ( <> diff --git a/src/view/shell/index.web.tsx b/src/view/shell/index.web.tsx index 1731ea247..10489489e 100644 --- a/src/view/shell/index.web.tsx +++ b/src/view/shell/index.web.tsx @@ -22,11 +22,13 @@ import { useSetDrawerOpen, useOnboardingState, } from '#/state/shell' +import {useModalControls} from '#/state/modals' const ShellInner = observer(function ShellInnerImpl() { const store = useStores() const isDrawerOpen = useIsDrawerOpen() const setDrawerOpen = useSetDrawerOpen() + const {closeModal} = useModalControls() const onboardingState = useOnboardingState() const {isDesktop, isMobile} = useWebMediaQueries() const navigator = useNavigation<NavigationProp>() @@ -35,9 +37,10 @@ const ShellInner = observer(function ShellInnerImpl() { useEffect(() => { navigator.addListener('state', () => { setDrawerOpen(false) + closeModal() store.shell.closeAnyActiveElement() }) - }, [navigator, store.shell, setDrawerOpen]) + }, [navigator, store.shell, setDrawerOpen, closeModal]) const showBottomBar = isMobile && !onboardingState.isActive const showSideNavs = |