feat(ios): intelligent Switch Markdown View & Ephemeral Action View (#9823)

Co-authored-by: EYHN <cneyhn@gmail.com>
This commit is contained in:
Lakr
2025-03-24 17:47:42 +08:00
committed by GitHub
parent 4d3eee3bad
commit 447b23f25f
192 changed files with 43960 additions and 980 deletions
@@ -0,0 +1,47 @@
//
// ApplicationBridgedWindowScript.swift
// App
//
// Created by on 2025/1/8.
//
import Foundation
import WebKit
enum ApplicationBridgedWindowScript: String {
case getCurrentDocContentInMarkdown = "return await window.getCurrentDocContentInMarkdown();"
case getCurrentServerBaseUrl = "window.getCurrentServerBaseUrl()"
case getCurrentWorkspaceId = "window.getCurrentWorkspaceId();"
case getCurrentDocId = "window.getCurrentDocId();"
var requiresAsyncContext: Bool {
switch self {
case .getCurrentDocContentInMarkdown: return true
default: return false
}
}
}
extension WKWebView {
func evaluateScript(_ script: ApplicationBridgedWindowScript, callback: @escaping (Any?) -> ()) {
if script.requiresAsyncContext {
callAsyncJavaScript(
script.rawValue,
arguments: [:],
in: nil,
in: .page
) { result in
switch result {
case .success(let input):
callback(input)
case .failure:
callback(nil)
}
}
} else {
evaluateJavaScript(script.rawValue) { output, _ in callback(output) }
}
}
}