1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 @objc(DevMenuModule) 4 open class DevMenuModule: NSObject { 5 deinit { 6 // cleanup registered callbacks when the bridge is deallocated to prevent these leaking into other (potentially unrelated) bridges 7 if DevMenuManager.wasInitilized { 8 DevMenuManager.shared.registeredCallbacks = [] 9 } 10 } 11 12 // MARK: JavaScript API 13 14 @objc 15 func openMenu() { 16 DevMenuManager.shared.openMenu() 17 } 18 19 @objc 20 func closeMenu() { 21 DevMenuManager.shared.closeMenu() 22 } 23 24 @objc 25 func hideMenu() { 26 DevMenuManager.shared.hideMenu() 27 } 28 29 @objc 30 func addDevMenuCallbacks(_ callbacks: [[String: Any]], resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { 31 callbacks.forEach { callback in 32 guard let name = callback["name"] as? String else { 33 return 34 } 35 36 let shouldCollapse = callback["shouldCollapse"] as? Bool ?? true 37 DevMenuManager.shared.registeredCallbacks.append( 38 DevMenuManager.Callback(name: name, shouldCollapse: shouldCollapse) 39 ) 40 } 41 42 return resolve(nil) 43 } 44 } 45