Fix dialogs state references, fixes Android back button (#3314)

* Fix active/open dialogs state

* Improve close logic
zio/stable
Eric Bailey 2024-03-21 12:06:39 -05:00 committed by GitHub
parent 55fb81867b
commit eb0ee6ae1c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 8 deletions

View File

@ -1,5 +1,6 @@
import React from 'react'
import {SharedValue, useSharedValue} from 'react-native-reanimated'
import {DialogControlRefProps} from '#/components/Dialog'
import {Provider as GlobalDialogsProvider} from '#/components/dialogs/Context'
@ -53,7 +54,10 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
>('auto')
const closeAllDialogs = React.useCallback(() => {
activeDialogs.current.forEach(dialog => dialog.current.close())
openDialogs.current.forEach(id => {
const dialog = activeDialogs.current.get(id)
if (dialog) dialog.current.close()
})
return openDialogs.current.size > 0
}, [])
@ -74,15 +78,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
const context = React.useMemo<IDialogContext>(
() => ({
activeDialogs: {
current: new Map(),
},
openDialogs: {
current: new Set(),
},
activeDialogs,
openDialogs,
importantForAccessibility,
}),
[importantForAccessibility],
[importantForAccessibility, activeDialogs, openDialogs],
)
const controls = React.useMemo(
() => ({closeAllDialogs, setDialogIsOpen}),