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