// Copyright 2015-present 650 Industries. All rights reserved. #import "EXAbstractLoader.h" #import "EXEnvironment.h" #import "EXFileDownloader.h" #import "EXHomeModuleManager.h" #import "EXManifestResource.h" #import "EXKernel.h" #import "EXKernelLinkingManager.h" #import "EXReactAppManager.h" @implementation EXHomeModuleManager // TODO: (@tsapeta) Move all of those dev menu methods out of here and make them independent of the kernel. - (BOOL)homeModuleShouldEnableDevtools:(__unused EXHomeModule *)module { EXKernelAppRecord *visibleApp = [EXKernel sharedInstance].visibleApp; return ( visibleApp != [EXKernel sharedInstance].appRegistry.homeAppRecord && [visibleApp.appManager enablesDeveloperTools] ); return NO; } - (NSDictionary *)devMenuItemsForHomeModule:(EXHomeModule *)module { return [[EXKernel sharedInstance].visibleApp.appManager devMenuItems]; } - (void)homeModule:(EXHomeModule *)module didSelectDevMenuItemWithKey:(NSString *)key { [[EXKernel sharedInstance].visibleApp.appManager selectDevMenuItemWithKey:key]; [module requestToCloseDevMenu]; } - (void)homeModuleDidSelectRefresh:(EXHomeModule *)module { [[EXKernel sharedInstance] reloadVisibleApp]; [module requestToCloseDevMenu]; } - (void)homeModuleDidSelectGoToHome:(EXHomeModule *)module { if ([EXKernel sharedInstance].browserController) { dispatch_async(dispatch_get_main_queue(), ^{ [[EXKernel sharedInstance].browserController moveHomeToVisible]; }); } [module requestToCloseDevMenu]; } - (void)homeModuleDidSelectQRReader:(EXHomeModule *)module { if ([EXKernel sharedInstance].browserController) { [EXUtil performSynchronouslyOnMainThread:^{ [[EXKernel sharedInstance].browserController showQRReader]; }]; } } - (void)homeModule:(__unused EXHomeModule *)module didOpenUrl:(NSString *)url { [[EXKernel sharedInstance].serviceRegistry.linkingManager openUrl:url isUniversalLink:NO]; } - (void)homeModule:(EXHomeModule *)homeModule didFinishNux:(BOOL)isNuxFinished { if ([EXKernel sharedInstance].browserController) { [[EXKernel sharedInstance].browserController setIsNuxFinished:isNuxFinished]; } } - (BOOL)homeModuleShouldFinishNux:(EXHomeModule *)homeModule { if ([EXKernel sharedInstance].browserController) { return [[EXKernel sharedInstance].browserController isNuxFinished]; } return NO; } @end