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