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