finish implementing server configuration
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user