1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 @objc(DevMenuInternalModule) 4 public class DevMenuInternalModule: NSObject, RCTBridgeModule { 5 public static func moduleName() -> String! { 6 return "ExpoDevMenuInternal" 7 } 8 9 let manager: DevMenuManager 10 11 init(manager: DevMenuManager) { 12 self.manager = manager 13 } 14 15 // MARK: JavaScript API 16 17 @objc 18 func dispatchActionAsync(_ actionId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { 19 if actionId == nil { 20 return reject("ERR_DEVMENU_ACTION_FAILED", "Action ID not provided.", nil) 21 } 22 manager.dispatchAction(withId: actionId) 23 resolve(nil) 24 } 25 26 @objc 27 func hideMenu() { 28 manager.hideMenu() 29 } 30 31 @objc 32 func setOnboardingFinished(_ finished: Bool) { 33 DevMenuSettings.isOnboardingFinished = finished 34 } 35 36 @objc 37 func getSettingsAsync(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { 38 resolve(DevMenuSettings.serialize()) 39 } 40 41 @objc 42 func setSettingsAsync(_ dict: [String: Any], resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { 43 if let motionGestureEnabled = dict["motionGestureEnabled"] as? Bool { 44 DevMenuSettings.motionGestureEnabled = motionGestureEnabled 45 } 46 if let touchGestureEnabled = dict["touchGestureEnabled"] as? Bool { 47 DevMenuSettings.touchGestureEnabled = touchGestureEnabled 48 } 49 if let keyCommandsEnabled = dict["keyCommandsEnabled"] as? Bool { 50 DevMenuSettings.keyCommandsEnabled = keyCommandsEnabled 51 } 52 if let showsAtLaunch = dict["showsAtLaunch"] as? Bool { 53 DevMenuSettings.showsAtLaunch = showsAtLaunch 54 } 55 } 56 } 57