mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-01 17:39:55 +08:00
a868f54eeb
## Summary - keep the editor active when iOS keyboard toolbar interactions move focus into range-sync excluded widgets - use the native iOS image picker/source sheet and sync native presentation with the app theme - pin `ListViewKit` to `1.1.6` so the iOS workspace resolves with Xcode 16.3 - restore vertical scrolling in the iOS `WKWebView` by removing the global `contentOffset` reset while preserving zoom prevention ## Test plan - [x] `yarn vitest --run --config \"vitest.config.ts\" --browser.enabled=false \"src/__tests__/inline/active.unit.spec.ts\"` - [x] `LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 xcodebuild -resolvePackageDependencies -workspace \"packages/frontend/apps/ios/App/App.xcworkspace\" -scheme \"App\"` - [x] `xcodebuild -workspace \"App.xcworkspace\" -scheme \"App\" -destination \"generic/platform=iOS Simulator\" build CODE_SIGNING_ALLOWED=NO ONLY_ACTIVE_ARCH=YES ARCHS=arm64` - [x] Xcode build validation for the updated PR branch
53 lines
1.4 KiB
Swift
53 lines
1.4 KiB
Swift
//
|
|
// ApplicationBridgedWindowScript.swift
|
|
// App
|
|
//
|
|
// Created by 秋星桥 on 2025/1/8.
|
|
//
|
|
|
|
import Foundation
|
|
import WebKit
|
|
|
|
/*
|
|
packages/frontend/apps/ios/src/app.tsx
|
|
*/
|
|
|
|
enum ApplicationBridgedWindowScript: String {
|
|
case getCurrentDocContentInMarkdown = "return await window.getCurrentDocContentInMarkdown();"
|
|
case getCurrentServerBaseUrl = "window.getCurrentServerBaseUrl()"
|
|
case getCurrentWorkspaceId = "window.getCurrentWorkspaceId();"
|
|
case getCurrentDocId = "window.getCurrentDocId();"
|
|
case getCurrentI18nLocale = "window.getCurrentI18nLocale();"
|
|
case getCurrentThemeMode = "window.getCurrentThemeMode();"
|
|
case createNewDocByMarkdownInCurrentWorkspace = "return await window.createNewDocByMarkdownInCurrentWorkspace(markdown, title);"
|
|
|
|
var requiresAsyncContext: Bool {
|
|
switch self {
|
|
case .getCurrentDocContentInMarkdown, .createNewDocByMarkdownInCurrentWorkspace: true
|
|
default: false
|
|
}
|
|
}
|
|
}
|
|
|
|
extension WKWebView {
|
|
func evaluateScript(_ script: ApplicationBridgedWindowScript, callback: @escaping (Any?) -> Void) {
|
|
if script.requiresAsyncContext {
|
|
callAsyncJavaScript(
|
|
script.rawValue,
|
|
arguments: [:],
|
|
in: nil,
|
|
in: .page
|
|
) { result in
|
|
switch result {
|
|
case let .success(input):
|
|
callback(input)
|
|
case .failure:
|
|
callback(nil)
|
|
}
|
|
}
|
|
} else {
|
|
evaluateJavaScript(script.rawValue) { output, _ in callback(output) }
|
|
}
|
|
}
|
|
}
|