1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 @objc(DevMenuModule) 4 open class DevMenuModule: NSObject, RCTBridgeModule { 5 public static func moduleName() -> String! { 6 return "ExpoDevMenu" 7 } 8 9 public static func requiresMainQueueSetup() -> Bool { 10 return true 11 } 12 13 // MARK: JavaScript API 14 15 @objc 16 func openMenu() { 17 DevMenuManager.shared.openMenu() 18 } 19 20 @objc 21 func openSettings() { 22 DevMenuManager.shared.openMenu("Settings") 23 } 24 25 @objc 26 func openProfile() { 27 DevMenuManager.shared.openMenu("Profile") 28 } 29 30 @objc 31 func isLoggedInAsync(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { 32 resolve(DevMenuManager.shared.expoApiClient.isLoggedIn()) 33 } 34 35 @objc 36 func queryDevSessionsAsync(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { 37 DevMenuManager.shared.expoApiClient.queryDevSessionsAsync({ (data, response, error) in 38 guard error == nil else { 39 reject("ERR_DEVMENU_CANNOT_GET_DEV_SESSIONS", error.debugDescription, error) 40 return 41 } 42 43 guard let data = data else { 44 resolve(nil) 45 return 46 } 47 48 let response = String(decoding: data, as: UTF8.self) 49 resolve(response) 50 }) 51 } 52 } 53