Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions ios/HyperSdkReact.mm
Original file line number Diff line number Diff line change
Expand Up @@ -311,12 +311,12 @@ -(void)stopObserving {
@try {
NSDictionary *jsonData = [HyperSdkReact stringToDictionary:data];
// Update baseViewController if it's nil or not in the view hierarchy.
if (self.hyperInstance.baseViewController == nil || self.hyperInstance.baseViewController.view.window == nil || [self.hyperInstance.baseViewController isMemberOfClass:RCTModalHostViewController.class]) {
if (self.hyperInstance.baseViewController == nil || self.hyperInstance.baseViewController.view.window == nil || [HyperSdkReact isRCTModalHostViewController:self.hyperInstance.baseViewController]) {
// Getting topViewController
id baseViewController = RCTPresentedViewController();

// Set the presenting ViewController as baseViewController if the topViewController is RCTModalHostViewController.
if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) {
if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) {
[self.hyperInstance setBaseViewController:[baseViewController presentingViewController]];
} else {
[self.hyperInstance setBaseViewController:baseViewController];
Expand Down Expand Up @@ -420,6 +420,11 @@ + (NSString*)dictionaryToString:(id)dict{
return data;
}

+ (BOOL)isRCTModalHostViewController:(UIViewController *)viewController {
Class rctModalClass = NSClassFromString(@"RCTModalHostViewController");
return rctModalClass && [viewController isMemberOfClass:rctModalClass];
}

@end

@implementation HyperFragmentViewManagerIOS
Expand Down Expand Up @@ -496,7 +501,7 @@ - (void)processWithPropsForView:(UIView *)view ns:(NSString *)ns payload:(NSStri
if (jsonData && [jsonData isKindOfClass:[NSDictionary class]] && jsonData.allKeys.count > 0) {
if (hyperServicesInstance.baseViewController == nil || hyperServicesInstance.baseViewController.view.window == nil) {
id baseViewController = RCTPresentedViewController();
if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) {
if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) {
[hyperServicesInstance setBaseViewController:[baseViewController presentingViewController]];
} else {
[hyperServicesInstance setBaseViewController:baseViewController];
Expand Down Expand Up @@ -528,7 +533,7 @@ - (void)processWithPropsForView:(UIView *)view ns:(NSString *)ns payload:(NSStri
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
if (hyperServicesInstance.baseViewController == nil || hyperServicesInstance.baseViewController.view.window == nil) {
id baseViewController = RCTPresentedViewController();
if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) {
if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) {
[hyperServicesInstance setBaseViewController:[baseViewController presentingViewController]];
} else {
[hyperServicesInstance setBaseViewController:baseViewController];
Expand Down
Loading