2026-06-18 15:26:47 +02:00
|
|
|
import Foundation
|
|
|
|
|
|
|
|
|
|
enum AuthMode: String, Codable, CaseIterable {
|
|
|
|
|
case guest
|
|
|
|
|
case password
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct SavedServer: Codable, Identifiable {
|
|
|
|
|
var id: UUID = UUID()
|
|
|
|
|
var host: String
|
|
|
|
|
var port: UInt16
|
|
|
|
|
var authMode: AuthMode
|
|
|
|
|
var savedUsername: String?
|
2026-06-21 04:03:50 +02:00
|
|
|
/// Free-form display name used when connecting as a guest. Distinct from the account
|
|
|
|
|
/// `savedUsername`. Empty/nil falls back to the system full name.
|
|
|
|
|
var nickname: String?
|
2026-06-18 15:26:47 +02:00
|
|
|
var keychainTag: String?
|
|
|
|
|
|
|
|
|
|
var displayString: String {
|
|
|
|
|
switch authMode {
|
|
|
|
|
case .guest:
|
|
|
|
|
return "\(host):\(port) (Guest)"
|
|
|
|
|
case .password:
|
|
|
|
|
return "\(savedUsername ?? "")@\(host):\(port)"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|