// Copyright 2015-present 650 Industries. All rights reserved. @objc(DevMenuModule) open class DevMenuModule: NSObject { deinit { // cleanup registered callbacks when the bridge is deallocated to prevent these leaking into other (potentially unrelated) bridges if DevMenuManager.wasInitilized { DevMenuManager.shared.registeredCallbacks = [] } } // MARK: JavaScript API @objc func openMenu() { DevMenuManager.shared.openMenu() } @objc func closeMenu() { DevMenuManager.shared.closeMenu() } @objc func hideMenu() { DevMenuManager.shared.hideMenu() } @objc func addDevMenuCallbacks(_ callbacks: [[String: Any]], resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) { callbacks.forEach { callback in guard let name = callback["name"] as? String else { return } let shouldCollapse = callback["shouldCollapse"] as? Bool ?? true DevMenuManager.shared.registeredCallbacks.append( DevMenuManager.Callback(name: name, shouldCollapse: shouldCollapse) ) } return resolve(nil) } }