mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 17:17:38 +00:00
47 lines
1.4 KiB
Swift
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()
|
|
}
|
|
}
|
|
}
|
|
}
|