@@ -37,7 +37,6 @@ function BottomDockedModal({
37
37
...props
38
38
} : ModalProps ) {
39
39
const [ isVisibleState , setIsVisibleState ] = useState ( isVisible ) ;
40
- const [ isContainerOpen , setIsContainerOpen ] = useState ( false ) ;
41
40
const [ isTransitioning , setIsTransitioning ] = useState ( false ) ;
42
41
const [ deviceWidth , setDeviceWidth ] = useState ( ( ) => Dimensions . get ( 'window' ) . width ) ;
43
42
const [ deviceHeight , setDeviceHeight ] = useState ( ( ) => Dimensions . get ( 'window' ) . height ) ;
@@ -104,28 +103,27 @@ function BottomDockedModal({
104
103
onModalWillHide ( ) ;
105
104
106
105
setIsVisibleState ( false ) ;
107
- setIsContainerOpen ( false ) ;
108
106
} ,
109
107
// eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
110
108
[ ] ,
111
109
) ;
112
110
113
111
useEffect ( ( ) => {
114
- if ( isVisible && ! isContainerOpen && ! isTransitioning ) {
112
+ if ( isVisible && ! isVisibleState && ! isTransitioning ) {
115
113
handleRef . current = InteractionManager . createInteractionHandle ( ) ;
116
114
onModalWillShow ( ) ;
117
115
118
116
setIsVisibleState ( true ) ;
119
117
setIsTransitioning ( true ) ;
120
- } else if ( ! isVisible && isContainerOpen && ! isTransitioning ) {
118
+ } else if ( ! isVisible && isVisibleState && ! isTransitioning ) {
121
119
handleRef . current = InteractionManager . createInteractionHandle ( ) ;
122
120
onModalWillHide ( ) ;
123
-
124
- setIsVisibleState ( false ) ;
125
121
setIsTransitioning ( true ) ;
122
+ } else if ( ! isVisible && isVisibleState && isTransitioning ) {
123
+ setIsVisibleState ( false ) ;
126
124
}
127
125
// eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps
128
- } , [ isVisible , isContainerOpen , isTransitioning ] ) ;
126
+ } , [ isVisible , isTransitioning , isVisibleState ] ) ;
129
127
130
128
const backdropStyle : ViewStyle = useMemo ( ( ) => {
131
129
return {
@@ -137,7 +135,6 @@ function BottomDockedModal({
137
135
138
136
const onOpenCallBack = useCallback ( ( ) => {
139
137
setIsTransitioning ( false ) ;
140
- setIsContainerOpen ( true ) ;
141
138
if ( handleRef . current ) {
142
139
InteractionManager . clearInteractionHandle ( handleRef . current ) ;
143
140
}
@@ -146,7 +143,6 @@ function BottomDockedModal({
146
143
147
144
const onCloseCallBack = useCallback ( ( ) => {
148
145
setIsTransitioning ( false ) ;
149
- setIsContainerOpen ( false ) ;
150
146
if ( handleRef . current ) {
151
147
InteractionManager . clearInteractionHandle ( handleRef . current ) ;
152
148
}
@@ -187,12 +183,10 @@ function BottomDockedModal({
187
183
pointerEvents = "box-none"
188
184
style = { [ styles . modalBackdrop , styles . modalContainerBox ] }
189
185
>
190
- { isVisibleState && (
191
- < >
192
- { hasBackdrop && backdropView }
193
- { containerView }
194
- </ >
195
- ) }
186
+ < >
187
+ { hasBackdrop && backdropView }
188
+ { containerView }
189
+ </ >
196
190
</ View >
197
191
) ;
198
192
}
@@ -203,7 +197,7 @@ function BottomDockedModal({
203
197
transparent
204
198
animationType = "none"
205
199
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
206
- visible = { isVisibleState || isTransitioning || isContainerOpen !== isVisibleState }
200
+ visible = { isVisibleState || isTransitioning }
207
201
onRequestClose = { onBackButtonPress }
208
202
statusBarTranslucent = { statusBarTranslucent }
209
203
testID = { testID }
0 commit comments