ssap_app/node_modules/expo-dev-menu/ios/Modules/DevMenuModule.swift

44 lines
1.2 KiB
Swift

// Copyright 2015-present 650 Industries. All rights reserved.
import ExpoModulesCore
open class DevMenuModule: Module {
public func definition() -> ModuleDefinition {
Name("ExpoDevMenu")
// MARK: JavaScript API
AsyncFunction("openMenu") {
DevMenuManager.shared.openMenu()
}
AsyncFunction("closeMenu") {
DevMenuManager.shared.closeMenu()
}
AsyncFunction("hideMenu") {
DevMenuManager.shared.hideMenu()
}
AsyncFunction("addDevMenuCallbacks") { (callbacks: [[String: Any]]) in
DevMenuManager.shared.registeredCallbacks.removeAll()
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)
)
}
}
}
deinit {
// cleanup registered callbacks when the bridge is deallocated to prevent these leaking into other (potentially unrelated) bridges
if DevMenuManager.wasInitilized {
DevMenuManager.shared.registeredCallbacks = []
}
}
}