1// Copyright 2015-present 650 Industries. All rights reserved. 2 3#import "EXAppLoader.h" 4#import "EXEnvironment.h" 5#import "EXFileDownloader.h" 6#import "EXHomeModuleManager.h" 7#import "EXManifestResource.h" 8#import "EXKernel.h" 9#import "EXKernelDevMotionHandler.h" 10#import "EXKernelLinkingManager.h" 11#import "EXReactAppManager.h" 12 13@implementation EXHomeModuleManager 14 15- (instancetype)init 16{ 17 if (self = [super init]) { 18 [EXKernelDevMotionHandler sharedInstance]; 19 } 20 return self; 21} 22 23- (BOOL)homeModuleShouldEnableDevtools:(__unused EXHomeModule *)module 24{ 25 EXKernelAppRecord *visibleApp = [EXKernel sharedInstance].visibleApp; 26 return ( 27 visibleApp != [EXKernel sharedInstance].appRegistry.homeAppRecord && 28 [visibleApp.appManager enablesDeveloperTools] 29 ); 30 return NO; 31} 32 33- (NSDictionary<NSString *, NSString *> *)devMenuItemsForHomeModule:(EXHomeModule *)module 34{ 35 return [[EXKernel sharedInstance].visibleApp.appManager devMenuItems]; 36} 37 38- (void)homeModule:(EXHomeModule *)module didSelectDevMenuItemWithKey:(NSString *)key 39{ 40 [[EXKernel sharedInstance].visibleApp.appManager selectDevMenuItemWithKey:key]; 41 [module requestToCloseDevMenu]; 42} 43 44- (void)homeModuleDidSelectRefresh:(EXHomeModule *)module 45{ 46 [[EXKernel sharedInstance] reloadVisibleApp]; 47 [module requestToCloseDevMenu]; 48} 49 50- (void)homeModuleDidSelectCloseMenu:(EXHomeModule *)module 51{ 52 if ([EXKernel sharedInstance].browserController) { 53 dispatch_async(dispatch_get_main_queue(), ^{ 54 [[EXKernel sharedInstance].browserController setIsMenuVisible:NO completion:^{}]; 55 }); 56 } 57} 58 59- (void)homeModuleDidSelectGoToHome:(EXHomeModule *)module 60{ 61 if ([EXKernel sharedInstance].browserController) { 62 dispatch_async(dispatch_get_main_queue(), ^{ 63 [[EXKernel sharedInstance].browserController moveHomeToVisible]; 64 }); 65 } 66 [module requestToCloseDevMenu]; 67} 68 69- (void)homeModuleDidSelectQRReader:(EXHomeModule *)module 70{ 71 if ([EXKernel sharedInstance].browserController) { 72 [EXUtil performSynchronouslyOnMainThread:^{ 73 [[EXKernel sharedInstance].browserController showQRReader]; 74 }]; 75 } 76} 77 78- (void)homeModule:(__unused EXHomeModule *)module didOpenUrl:(NSString *)url 79{ 80 [[EXKernel sharedInstance].serviceRegistry.linkingManager openUrl:url isUniversalLink:NO]; 81} 82 83- (void)homeModule:(EXHomeModule *)homeModule didFinishNux:(BOOL)isNuxFinished 84{ 85 if ([EXKernel sharedInstance].browserController) { 86 [[EXKernel sharedInstance].browserController setIsNuxFinished:isNuxFinished]; 87 } 88} 89 90- (BOOL)homeModuleShouldFinishNux:(EXHomeModule *)homeModule 91{ 92 if ([EXKernel sharedInstance].browserController) { 93 return [[EXKernel sharedInstance].browserController isNuxFinished]; 94 } 95 return NO; 96} 97 98@end 99