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

View File

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

View File

@@ -23,8 +23,9 @@ struct ServerListSettingsView: View
}
} else {
Form {
List(model.configuredServers) { server in
serverListItem(server)
List($model.configuredServers, editActions: [.delete]) { server in
serverListItem(server.wrappedValue)
.tag(server.id)
}
}
}
@@ -81,14 +82,39 @@ struct ServerListSettingsView: View
{
var configuredServers: [Server]
var isAddServerPresented = false
var selectedItems: [Server.ID] = []
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) {
isAddServerPresented = false
configuredServers.append(server)
configuredServers = configuredServers + [ server ]
saveToSettings()
}
func saveToSettings() {
Settings
.fromDefaults()
.configuredServers(configuredServers)
.save()
}
}
}