1// Copyright 2015-present 650 Industries. All rights reserved. 2 3#import "EXAbstractLoader.h" 4#import "EXEnvironment.h" 5#import "EXFileDownloader.h" 6#import "EXHomeModuleManager.h" 7#import "EXManifestResource.h" 8#import "EXKernel.h" 9#import "EXKernelLinkingManager.h" 10#import "EXReactAppManager.h" 11 12@implementation EXHomeModuleManager 13 14// TODO: (@tsapeta) Move all of those dev menu methods out of here and make them independent of the kernel. 15 16- (BOOL)homeModuleShouldEnableDevtools:(__unused EXHomeModule *)module 17{ 18 EXKernelAppRecord *visibleApp = [EXKernel sharedInstance].visibleApp; 19 return ( 20 visibleApp != [EXKernel sharedInstance].appRegistry.homeAppRecord && 21 [visibleApp.appManager enablesDeveloperTools] 22 ); 23 return NO; 24} 25 26- (NSDictionary<NSString *, NSString *> *)devMenuItemsForHomeModule:(EXHomeModule *)module 27{ 28 return [[EXKernel sharedInstance].visibleApp.appManager devMenuItems]; 29} 30 31- (void)homeModule:(EXHomeModule *)module didSelectDevMenuItemWithKey:(NSString *)key 32{ 33 [[EXKernel sharedInstance].visibleApp.appManager selectDevMenuItemWithKey:key]; 34 [module requestToCloseDevMenu]; 35} 36 37- (void)homeModuleDidSelectRefresh:(EXHomeModule *)module 38{ 39 [[EXKernel sharedInstance] reloadVisibleApp]; 40 [module requestToCloseDevMenu]; 41} 42 43- (void)homeModuleDidSelectGoToHome:(EXHomeModule *)module 44{ 45 if ([EXKernel sharedInstance].browserController) { 46 dispatch_async(dispatch_get_main_queue(), ^{ 47 [[EXKernel sharedInstance].browserController moveHomeToVisible]; 48 }); 49 } 50 [module requestToCloseDevMenu]; 51} 52 53- (void)homeModuleDidSelectQRReader:(EXHomeModule *)module 54{ 55 if ([EXKernel sharedInstance].browserController) { 56 [EXUtil performSynchronouslyOnMainThread:^{ 57 [[EXKernel sharedInstance].browserController showQRReader]; 58 }]; 59 } 60} 61 62- (void)homeModule:(__unused EXHomeModule *)module didOpenUrl:(NSString *)url 63{ 64 [[EXKernel sharedInstance].serviceRegistry.linkingManager openUrl:url isUniversalLink:NO]; 65} 66 67- (void)homeModule:(EXHomeModule *)homeModule didFinishNux:(BOOL)isNuxFinished 68{ 69 if ([EXKernel sharedInstance].browserController) { 70 [[EXKernel sharedInstance].browserController setIsNuxFinished:isNuxFinished]; 71 } 72} 73 74- (BOOL)homeModuleShouldFinishNux:(EXHomeModule *)homeModule 75{ 76 if ([EXKernel sharedInstance].browserController) { 77 return [[EXKernel sharedInstance].browserController isNuxFinished]; 78 } 79 return NO; 80} 81 82@end 83