1#import "EXDevLauncherController.h" 2 3@import EXDevMenuInterface; 4 5@interface EXDevLauncherDevMenuExtensions : NSObject <RCTBridgeModule, DevMenuExtensionProtocol> 6 7@end 8 9@implementation EXDevLauncherDevMenuExtensions 10 11// Need to explicitly define `moduleName` here for dev menu to pick it up 12RCT_EXTERN void RCTRegisterModule(Class); 13 14+ (NSString *)moduleName 15{ 16 return @"ExpoDevelopmentClientDevMenuExtensions"; 17} 18 19+ (void)load 20{ 21 RCTRegisterModule(self); 22} 23 24+ (BOOL)requiresMainQueueSetup { 25 return YES; 26} 27 28- (id<DevMenuItemsContainerProtocol>)devMenuItems:(id<DevMenuExtensionSettingsProtocol>)settings 29{ 30 if (![EXDevLauncherController.sharedInstance isAppRunning]) { 31 return nil; 32 } 33 34 DevMenuItemsContainer *container = [DevMenuItemsContainer new]; 35 36 DevMenuAction *backToLauncher = [[DevMenuAction alloc] initWithId:@"backToLauncher" action:^{ 37 dispatch_async(dispatch_get_main_queue(), ^{ 38 EXDevLauncherController *controller = [EXDevLauncherController sharedInstance]; 39 [controller navigateToLauncher]; 40 }); 41 }]; 42 backToLauncher.label = ^{ return @"Back to Launcher"; }; 43 backToLauncher.glyphName = ^{ return @"exit-to-app"; }; 44 backToLauncher.importance = DevMenuItemImportanceMedium; 45 [backToLauncher registerKeyCommandWithInput:@"L" modifiers:UIKeyModifierCommand]; 46 47 [container addItem:backToLauncher]; 48 return container; 49} 50 51@end 52