|
10 | 10 | #import "RCTBridge.h"
|
11 | 11 | #import "RCTModalHostView.h"
|
12 | 12 | #import "RCTModalHostViewController.h"
|
| 13 | +#import "RCTModalManager.h" |
13 | 14 | #import "RCTShadowView.h"
|
14 | 15 | #import "RCTUtils.h"
|
15 | 16 |
|
@@ -46,8 +47,6 @@ - (void)insertReactSubview:(id<RCTComponent>)subview atIndex:(NSInteger)atIndex
|
46 | 47 |
|
47 | 48 | @interface RCTModalHostViewManager () <RCTModalHostViewInteractor>
|
48 | 49 |
|
49 |
| -@property (nonatomic, copy) dispatch_block_t dismissWaitingBlock; |
50 |
| - |
51 | 50 | @end
|
52 | 51 |
|
53 | 52 | @implementation RCTModalHostViewManager {
|
@@ -79,33 +78,25 @@ - (void)presentModalHostView:(RCTModalHostView *)modalHostView
|
79 | 78 | if (_presentationBlock) {
|
80 | 79 | _presentationBlock([modalHostView reactViewController], viewController, animated, completionBlock);
|
81 | 80 | } else {
|
82 |
| - __weak typeof(self) weakself = self; |
83 | 81 | [[modalHostView reactViewController] presentViewController:viewController
|
84 | 82 | animated:animated
|
85 |
| - completion:^{ |
86 |
| - !completionBlock ?: completionBlock(); |
87 |
| - __strong typeof(weakself) strongself = weakself; |
88 |
| - !strongself.dismissWaitingBlock |
89 |
| - ?: strongself.dismissWaitingBlock(); |
90 |
| - strongself.dismissWaitingBlock = nil; |
91 |
| - }]; |
| 83 | + completion:completionBlock]; |
92 | 84 | }
|
93 | 85 | }
|
94 | 86 |
|
95 | 87 | - (void)dismissModalHostView:(RCTModalHostView *)modalHostView
|
96 | 88 | withViewController:(RCTModalHostViewController *)viewController
|
97 | 89 | animated:(BOOL)animated
|
98 | 90 | {
|
| 91 | + dispatch_block_t completionBlock = ^{ |
| 92 | + if (modalHostView.identifier) { |
| 93 | + [[self.bridge moduleForClass:[RCTModalManager class]] modalDismissed:modalHostView.identifier]; |
| 94 | + } |
| 95 | + }; |
99 | 96 | if (_dismissalBlock) {
|
100 |
| - _dismissalBlock([modalHostView reactViewController], viewController, animated, nil); |
| 97 | + _dismissalBlock([modalHostView reactViewController], viewController, animated, completionBlock); |
101 | 98 | } else {
|
102 |
| - self.dismissWaitingBlock = ^{ |
103 |
| - [viewController.presentingViewController dismissViewControllerAnimated:animated completion:nil]; |
104 |
| - }; |
105 |
| - if (viewController.presentingViewController) { |
106 |
| - self.dismissWaitingBlock(); |
107 |
| - self.dismissWaitingBlock = nil; |
108 |
| - } |
| 99 | + [viewController.presentingViewController dismissViewControllerAnimated:animated completion:completionBlock]; |
109 | 100 | }
|
110 | 101 | }
|
111 | 102 |
|
|
0 commit comments