https issue erledigt

This commit is contained in:
2026-04-12 18:43:55 +02:00
parent 12d12a8276
commit 3fd4ff76f7
6 changed files with 43 additions and 5 deletions
Vendored
BIN
View File
Binary file not shown.
+9 -1
View File
@@ -15,7 +15,15 @@ struct DockgeServer: Identifiable, Codable {
var baseURL: URL? {
let scheme = useSSL ? "https" : "http"
return URL(string: "\(scheme)://\(host)")
var cleanHost = host.trimmingCharacters(in: .whitespaces)
for prefix in ["https://", "http://"] {
if cleanHost.lowercased().hasPrefix(prefix) {
cleanHost = String(cleanHost.dropFirst(prefix.count))
break
}
}
cleanHost = cleanHost.trimmingCharacters(in: CharacterSet(charactersIn: "/"))
return URL(string: "\(scheme)://\(cleanHost)")
}
var displayHost: String { host }
@@ -153,6 +153,9 @@ final class SocketIOClient: NSObject {
Task { @MainActor [weak self] in
guard let self else { return }
self.connectionState = .disconnected
self.webSocketTask?.cancel(with: .goingAway, reason: nil)
self.webSocketTask = nil
self.pendingAcks.removeAll()
self.errorHandlers.forEach { $0(error) }
self.disconnectHandlers.forEach { $0() }
}
@@ -62,7 +62,17 @@ struct AddServerView: View {
}
private func save() {
let trimmedHost = host.trimmingCharacters(in: .whitespaces)
var trimmedHost = host.trimmingCharacters(in: .whitespaces)
// Strip any scheme the user may have pasted in
if trimmedHost.lowercased().hasPrefix("https://") {
trimmedHost = String(trimmedHost.dropFirst("https://".count))
useSSL = true
} else if trimmedHost.lowercased().hasPrefix("http://") {
trimmedHost = String(trimmedHost.dropFirst("http://".count))
useSSL = false
}
// Strip trailing slash
trimmedHost = trimmedHost.trimmingCharacters(in: CharacterSet(charactersIn: "/"))
if var existing = editingServer {
existing.name = name.trimmingCharacters(in: .whitespaces)
existing.host = trimmedHost
+20 -3
View File
@@ -7,6 +7,7 @@ struct LoginView: View {
@Environment(\.dismiss) private var dismiss
@State private var username = ""
@State private var password = ""
@State private var showPassword = false
@State private var twoFAToken = ""
@State private var showTwoFA = false
@State private var showSetup = false
@@ -53,10 +54,26 @@ struct LoginView: View {
.padding()
.background(Color.appSurface, in: RoundedRectangle(cornerRadius: 10))
SecureField("Password", text: $password)
HStack {
Group {
if showPassword {
TextField("Password", text: $password)
} else {
SecureField("Password", text: $password)
}
}
.textFieldStyle(.plain)
.padding()
.background(Color.appSurface, in: RoundedRectangle(cornerRadius: 10))
.autocorrectionDisabled()
.textInputAutocapitalization(.never)
Button {
showPassword.toggle()
} label: {
Image(systemName: showPassword ? "eye.slash" : "eye")
.foregroundStyle(.appGray)
}
}
.padding()
.background(Color.appSurface, in: RoundedRectangle(cornerRadius: 10))
if showTwoFA {
TextField("2FA Code", text: $twoFAToken)