fix(iOS): connect flow — new SMB opens Files for auth, saved servers use FileManager directly. Both flows save to history.

This commit is contained in:
yumoqing 2026-07-04 19:57:33 +08:00
parent 6a605451e4
commit 3cb5b1d8a4

View File

@ -422,13 +422,15 @@ struct NetworkFileBrowserIOS: View {
}
// MARK: -
/// iOS Files SMB Files FileManager
private func connectToServer(_ urlStr: String) {
let t = urlStr.trimmingCharacters(in: .whitespaces)
guard !t.isEmpty, let url = URL(string: t) else { return }
isConnecting = true; connectError = nil; smbURL = t
DispatchQueue.global(qos: .userInitiated).async {
// FileManager
DispatchQueue.global(qos: .userInitiated).async { [self] in
do {
let contents = try FileManager.default.contentsOfDirectory(
at: url, includingPropertiesForKeys: [.isDirectoryKey, .fileSizeKey],
@ -440,19 +442,19 @@ struct NetworkFileBrowserIOS: View {
DispatchQueue.main.async {
self.items = fi; self.browseURL = url; self.isConnecting = false
//
if !self.savedServers.contains(t) {
self.savedServers.insert(t, at: 0)
UserDefaults.standard.set(self.savedServers, forKey: "MiniPlayer.smbServers")
}
self.addToSaved(t)
}
} catch {
// FileManager Files
DispatchQueue.main.async {
self.isConnecting = false
self.connectError = "Connection failed. Opening Files app..."
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
UIApplication.shared.open(url) { ok in
self.connectError = ok ? "Login in Files, then come back." : "Invalid URL"
self.addToSaved(t) //
// Files
UIApplication.shared.open(url) { ok in
if ok {
self.connectError = "Login in Files, then tap this server again."
} else {
self.connectError = "Cannot open. Check URL format."
}
}
}
@ -460,6 +462,13 @@ struct NetworkFileBrowserIOS: View {
}
}
private func addToSaved(_ url: String) {
if !savedServers.contains(url) {
savedServers.insert(url, at: 0)
UserDefaults.standard.set(savedServers, forKey: "MiniPlayer.smbServers")
}
}
private func goUp() {
if pathStack.isEmpty { browseURL = nil; items = [] }
else { let p = pathStack.removeLast(); navigateTo(p) }