Close active elements on state change (#677)

zio/stable
Ollie H 2023-05-17 07:46:10 -07:00 committed by GitHub
parent 09bb2f5208
commit 656baa7239
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 3 deletions

View File

@ -21,6 +21,9 @@ interface Img {
export const Lightbox = observer(function Lightbox() { export const Lightbox = observer(function Lightbox() {
const store = useStores() const store = useStores()
const onClose = useCallback(() => store.shell.closeLightbox(), [store.shell])
if (!store.shell.isLightboxActive) { if (!store.shell.isLightboxActive) {
return null return null
} }
@ -29,8 +32,6 @@ export const Lightbox = observer(function Lightbox() {
const initialIndex = const initialIndex =
activeLightbox instanceof models.ImagesLightbox ? activeLightbox.index : 0 activeLightbox instanceof models.ImagesLightbox ? activeLightbox.index : 0
const onClose = () => store.shell.closeLightbox()
let imgs: Img[] | undefined let imgs: Img[] | undefined
if (activeLightbox instanceof models.ProfileImageLightbox) { if (activeLightbox instanceof models.ProfileImageLightbox) {
const opts = activeLightbox const opts = activeLightbox

View File

@ -1,4 +1,4 @@
import React from 'react' import React, {useEffect} from 'react'
import {observer} from 'mobx-react-lite' import {observer} from 'mobx-react-lite'
import {View, StyleSheet, TouchableOpacity} from 'react-native' import {View, StyleSheet, TouchableOpacity} from 'react-native'
import {useStores} from 'state/index' import {useStores} from 'state/index'
@ -14,11 +14,21 @@ import {RoutesContainer, FlatNavigator} from '../../Navigation'
import {DrawerContent} from './Drawer' import {DrawerContent} from './Drawer'
import {useWebMediaQueries} from '../../lib/hooks/useWebMediaQueries' import {useWebMediaQueries} from '../../lib/hooks/useWebMediaQueries'
import {BottomBarWeb} from './bottom-bar/BottomBarWeb' import {BottomBarWeb} from './bottom-bar/BottomBarWeb'
import {useNavigation} from '@react-navigation/native'
import {NavigationProp} from 'lib/routes/types'
const ShellInner = observer(() => { const ShellInner = observer(() => {
const store = useStores() const store = useStores()
const {isDesktop} = useWebMediaQueries() const {isDesktop} = useWebMediaQueries()
const navigator = useNavigation<NavigationProp>()
useEffect(() => {
navigator.addListener('state', () => {
store.shell.closeAnyActiveElement()
})
}, [navigator, store.shell])
return ( return (
<> <>
<View style={s.hContentRegion}> <View style={s.hContentRegion}>