Files
orca/mobile/modules/orca-mobile-web-shell/ios/OrcaMobileWebShellModule.swift
T

47 lines
1.4 KiB
Swift

import ExpoModulesCore
import QuickLook
public class OrcaMobileWebShellModule: Module {
private var pdfPreview: MobileWebShellPdfPreview?
public func definition() -> ModuleDefinition {
Name("OrcaMobileWebShell")
AsyncFunction("presentPdf") { (url: URL) in
guard let presenter = self.appContext?.utilities?.currentViewController() else {
throw PdfPresenterUnavailableException()
}
let preview = MobileWebShellPdfPreview(url: url)
let controller = QLPreviewController()
controller.dataSource = preview
self.pdfPreview = preview
presenter.present(controller, animated: true)
}.runOnQueue(.main)
View(OrcaMobileWebShellView.self) {
Events("onLoadState", "onBridgeMessage", "onExternalNavigation")
Prop("generationDirectory") { (view: OrcaMobileWebShellView, value: String) in
view.setGenerationDirectory(value)
}
Prop("sessionId") { (view: OrcaMobileWebShellView, value: String) in
view.setSessionId(value)
}
Prop("bridgeEnabled") { (view: OrcaMobileWebShellView, value: Bool) in
view.setBridgeEnabled(value)
}
AsyncFunction("postBridgeMessage") {
(view: OrcaMobileWebShellView, json: String, promise: Promise) in
try view.postBridgeMessage(json, promise: promise)
}
OnViewDidUpdateProps { (view: OrcaMobileWebShellView) in
view.propsDidUpdate()
}
}
}
}