From b2bb92036b72c9362f60c13e1da9ee53839a52f9 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Tue, 17 Mar 2026 20:17:42 +0800 Subject: [PATCH] fix(ios): decode percent-encoded file URIs in copy_uri_to_path (#3553) --- .../ios/Sources/NativeBridgePlugin.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift index 7a7ba653..ea3e47e5 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift @@ -836,8 +836,18 @@ class NativeBridgePlugin: Plugin { return invoke.reject("URI and destination path must be provided") } - guard let uri = URL(string: uriString) else { - return invoke.reject("Invalid URI") + let uri: URL + if uriString.hasPrefix("file://") { + let path = String(uriString.dropFirst("file://".count)) + guard let decodedPath = path.removingPercentEncoding else { + return invoke.reject("Invalid URI encoding") + } + uri = URL(fileURLWithPath: decodedPath) + } else { + guard let parsed = URL(string: uriString) else { + return invoke.reject("Invalid URI") + } + uri = parsed } let fileManager = FileManager.default