增加 Markdown 文件分享支持

This commit is contained in:
2026-07-14 22:29:58 +08:00
parent e19dba594c
commit 3dccd16757
9 changed files with 657 additions and 5 deletions
+42 -2
View File
@@ -60,11 +60,17 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
}
private func handleSharedFile(_ url: URL) {
guard url.isFileURL,
let navigationController = window?.rootViewController as? UINavigationController else {
guard let navigationController = window?.rootViewController as? UINavigationController else {
return
}
if url.scheme == "noteapp", url.host == "share" {
handleShareURL(url, navigationController: navigationController)
return
}
guard url.isFileURL else { return }
let shouldStopAccessing = url.startAccessingSecurityScopedResource()
defer {
if shouldStopAccessing {
@@ -86,6 +92,40 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
}
}
private func handleShareURL(_ url: URL, navigationController: UINavigationController) {
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false),
let queryItems = components.queryItems else { return }
let fileManager = FileManager.default
let containerURL = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "group.com.fishestlife.note")
let sharedDir = containerURL?.appendingPathComponent("SharedFiles", isDirectory: true)
var contents: [(text: String, fileName: String)] = []
for item in queryItems {
if item.name.hasPrefix("text"), let text = item.value, !text.isEmpty {
contents.append((text: text, fileName: "shared.md"))
} else if item.name.hasPrefix("file"), let fileName = item.value, !fileName.isEmpty {
if let sharedDir = sharedDir {
let fileURL = sharedDir.appendingPathComponent(fileName)
if let text = try? String(contentsOf: fileURL, encoding: .utf8) {
contents.append((text: text, fileName: fileName))
}
}
}
}
guard let first = contents.first else { return }
DispatchQueue.main.async {
let viewController = PreviewViewController()
viewController.initialText = first.text
viewController.fileName = first.fileName
viewController.title = first.fileName
navigationController.pushViewController(viewController, animated: true)
}
}
}