finish implementing server configuration

This commit is contained in:
2025-06-10 22:40:51 -07:00
parent f4f3ef543f
commit 0cdbecc031
3 changed files with 41 additions and 11 deletions

View File

@@ -11,6 +11,12 @@ struct Settings
{ {
var configuredServers: [Server] var configuredServers: [Server]
func configuredServers(_ servers: [Server]) -> Self {
var copy = self
copy.configuredServers = servers
return copy
}
var isConfigured: Bool { var isConfigured: Bool {
!configuredServers.isEmpty !configuredServers.isEmpty
} }
@@ -41,12 +47,6 @@ struct Settings
{ {
case configuredServers case configuredServers
} }
struct Server: Codable
{
let address: String
let port: UInt32
}
} }
extension Notification.Name extension Notification.Name

View File

@@ -227,10 +227,14 @@ struct DiscoveredEndpoint: Identifiable
} else { } else {
continuation.resume(throwing: Self.Error.endpointIncorrect) continuation.resume(throwing: Self.Error.endpointIncorrect)
} }
connection.cancel()
case .cancelled: case .cancelled:
continuation.resume(throwing: Self.Error.cancelledConnection) // expected
break
case .failed(let error): case .failed(let error):
continuation.resume(throwing: error) continuation.resume(throwing: error)
connection.cancel()
default: default:
break break
} }

View File

@@ -23,8 +23,9 @@ struct ServerListSettingsView: View
} }
} else { } else {
Form { Form {
List(model.configuredServers) { server in List($model.configuredServers, editActions: [.delete]) { server in
serverListItem(server) serverListItem(server.wrappedValue)
.tag(server.id)
} }
} }
} }
@@ -81,14 +82,39 @@ struct ServerListSettingsView: View
{ {
var configuredServers: [Server] var configuredServers: [Server]
var isAddServerPresented = false var isAddServerPresented = false
var selectedItems: [Server.ID] = []
init() { init() {
self.configuredServers = [] self.configuredServers = Settings
.fromDefaults()
.configuredServers
observeForChanges()
}
func observeForChanges() {
withObservationTracking {
_ = configuredServers
} onChange: {
Task { @MainActor [weak self] in
guard let self else { return }
saveToSettings()
observeForChanges()
}
}
} }
func onAddServer(server: Server) { func onAddServer(server: Server) {
isAddServerPresented = false isAddServerPresented = false
configuredServers.append(server) configuredServers = configuredServers + [ server ]
saveToSettings()
}
func saveToSettings() {
Settings
.fromDefaults()
.configuredServers(configuredServers)
.save()
} }
} }
} }