1// Copyright 2015-present 650 Industries. All rights reserved.
2
3#import "EXDevSettings.h"
4#import "EXDevSettingsDataSource.h"
5
6// redefined from RCTDevMenu.mm
7NSString *const kRCTDevSettingShakeToShowDevMenu = @"shakeToShow";
8NSString *const kRCTDevSettingLiveReloadEnabled = @"liveReloadEnabled";
9NSString *const kRCTDevSettingHotLoadingEnabled = @"hotLoadingEnabled";
10
11@implementation EXDevSettings
12
13+ (NSString *)moduleName { return @"RCTDevSettings"; }
14
15- (instancetype)initWithScopeKey:(NSString *)scopeKey isDevelopment:(BOOL)isDevelopment
16{
17  NSDictionary *defaultValues = @{
18                                  kRCTDevSettingShakeToShowDevMenu: @YES,
19                                  kRCTDevSettingHotLoadingEnabled: @YES,
20                                  kRCTDevSettingLiveReloadEnabled: @NO,
21                                  };
22  EXDevSettingsDataSource *dataSource = [[EXDevSettingsDataSource alloc] initWithDefaultValues:defaultValues
23                                                                         forScopeKey:scopeKey
24                                                                                 isDevelopment:isDevelopment];
25  return [super initWithDataSource:dataSource];
26}
27
28- (NSArray<NSString *> *)supportedEvents
29{
30  return [super supportedEvents];
31}
32
33- (BOOL)isRemoteDebuggingAvailable
34{
35  NSString *bridgeDescription = [self.bridge valueForKey:@"_bridgeDescription"];
36  BOOL isHermesRuntime = [bridgeDescription containsString:@"HermesRuntime"];
37  if (isHermesRuntime) {
38    // Disable remote debugging when running on Hermes
39    return NO;
40  }
41  return [super isRemoteDebuggingAvailable];
42}
43
44@end
45