1380376eaSBartłomiej Klocek import Foundation 2380376eaSBartłomiej Klocek 3380376eaSBartłomiej Klocek public class NativeModulesProxyModule: Module { 4380376eaSBartłomiej Klocek public static let moduleName = "NativeModulesProxy" 5380376eaSBartłomiej Klocek definitionnull6380376eaSBartłomiej Klocek public func definition() -> ModuleDefinition { 7380376eaSBartłomiej Klocek Name(Self.moduleName) 8380376eaSBartłomiej Klocek 9380376eaSBartłomiej Klocek Constants { () -> [String: Any?] in 10380376eaSBartłomiej Klocek guard let config = self.appContext?.legacyModulesProxy?.nativeModulesConfig else { 11380376eaSBartłomiej Klocek // TODO: Throw, but what? 12380376eaSBartłomiej Klocek return [:] 13380376eaSBartłomiej Klocek } 14380376eaSBartłomiej Klocek return config.toDictionary() 15380376eaSBartłomiej Klocek } 16370e2621STomasz Sapeta 17370e2621STomasz Sapeta AsyncFunction("callMethod") { (moduleName: String, methodName: String, arguments: [Any], promise: Promise) in 18370e2621STomasz Sapeta guard let appContext = self.appContext else { 19*7921b28aSTomasz Sapeta return promise.reject(Exceptions.AppContextLost()) 20370e2621STomasz Sapeta } 21370e2621STomasz Sapeta 22370e2621STomasz Sapeta // Call a method on the new module if exists 23370e2621STomasz Sapeta if appContext.hasModule(moduleName) { 24370e2621STomasz Sapeta appContext.callFunction(methodName, onModule: moduleName, withArgs: arguments, resolve: promise.resolver, reject: promise.legacyRejecter) 25370e2621STomasz Sapeta return 26370e2621STomasz Sapeta } 27370e2621STomasz Sapeta 28370e2621STomasz Sapeta // Call a method on the legacy module 29370e2621STomasz Sapeta guard let legacyModule = appContext.legacyModuleRegistry?.getExportedModule(forName: moduleName) else { 30370e2621STomasz Sapeta return promise.reject(ModuleHolder.ModuleNotFoundException(moduleName)) 31370e2621STomasz Sapeta } 32370e2621STomasz Sapeta legacyModule.methodQueue().async { 33370e2621STomasz Sapeta legacyModule.callExportedMethod(methodName, withArguments: arguments, resolver: promise.resolver, rejecter: promise.legacyRejecter) 34370e2621STomasz Sapeta } 35370e2621STomasz Sapeta } 36380376eaSBartłomiej Klocek } 37380376eaSBartłomiej Klocek } 38