From 7808b8e88886e82a4d09587d33d2a5c6abb6c2bf Mon Sep 17 00:00:00 2001 From: Muhammad Hur Ali Date: Thu, 21 Oct 2021 14:22:21 +0500 Subject: [PATCH 1/3] Added fix for app freeze issue when modal closes --- React/Views/RCTModalHostView.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/React/Views/RCTModalHostView.m b/React/Views/RCTModalHostView.m index bea9e08af961..0708b7646008 100644 --- a/React/Views/RCTModalHostView.m +++ b/React/Views/RCTModalHostView.m @@ -117,8 +117,10 @@ - (void)didUpdateReactSubviews - (void)dismissModalViewController { if (_isPresented) { - [_delegate dismissModalHostView:self withViewController:_modalViewController animated:[self hasAnimationType]]; - _isPresented = NO; + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate dismissModalHostView:self withViewController:_modalViewController animated:[self hasAnimationType]]; + _isPresented = NO; + }); } } From b9b17183cb351103691244d4b9a2e7427decf5e7 Mon Sep 17 00:00:00 2001 From: Muhammad Hur Ali Date: Mon, 25 Oct 2021 21:09:19 +0500 Subject: [PATCH 2/3] Added the required to explicitly mention self, in dismissModalViewController --- React/Views/RCTModalHostView.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/React/Views/RCTModalHostView.m b/React/Views/RCTModalHostView.m index 0708b7646008..8ab066981f36 100644 --- a/React/Views/RCTModalHostView.m +++ b/React/Views/RCTModalHostView.m @@ -117,9 +117,9 @@ - (void)didUpdateReactSubviews - (void)dismissModalViewController { if (_isPresented) { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate dismissModalHostView:self withViewController:_modalViewController animated:[self hasAnimationType]]; - _isPresented = NO; + dispatch_async(dispatch_get_main_queue(), ^{ + [self->_delegate dismissModalHostView:self withViewController:self->_modalViewController animated:[self hasAnimationType]]; + self->_isPresented = NO; }); } } From 233404adee017837dc14c0c6c00d1c647f2e9382 Mon Sep 17 00:00:00 2001 From: Muhammad Hur Ali Date: Fri, 5 Nov 2021 17:20:42 +0500 Subject: [PATCH 3/3] _isPresented moved inside callback for the dispatch_async --- React/Views/RCTModalHostView.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/React/Views/RCTModalHostView.m b/React/Views/RCTModalHostView.m index 8ab066981f36..bac7543c691a 100644 --- a/React/Views/RCTModalHostView.m +++ b/React/Views/RCTModalHostView.m @@ -116,12 +116,12 @@ - (void)didUpdateReactSubviews - (void)dismissModalViewController { - if (_isPresented) { - dispatch_async(dispatch_get_main_queue(), ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (_isPresented) { [self->_delegate dismissModalHostView:self withViewController:self->_modalViewController animated:[self hasAnimationType]]; self->_isPresented = NO; + } }); - } } - (void)didMoveToWindow