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