aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Models')
-rw-r--r--Hotline/Models/Hotline.swift16
-rw-r--r--Hotline/Models/Server.swift16
-rw-r--r--Hotline/Models/Tracker.swift10
3 files changed, 28 insertions, 14 deletions
diff --git a/Hotline/Models/Hotline.swift b/Hotline/Models/Hotline.swift
index 70f68a9..b83dc80 100644
--- a/Hotline/Models/Hotline.swift
+++ b/Hotline/Models/Hotline.swift
@@ -3,19 +3,21 @@ import SwiftUI
@Observable final class Hotline {
let trackerClient: HotlineTrackerClient
-
-
init(trackerClient: HotlineTrackerClient) {
self.trackerClient = trackerClient
}
- @MainActor func getServers(address: String, port: Int) async {
- let fetchedServers = await withCheckedContinuation { [weak self] continuation in
- self?.trackerClient.fetch() {
- continuation.resume(returning: [])
+ @MainActor func getServers(address: String, port: Int = Tracker.defaultPort) async -> [Server] {
+ let fetchedServers: [HotlineServer] = await self.trackerClient.fetchServers(address: address, port: port)
+
+ var servers: [Server] = []
+
+ for s in fetchedServers {
+ if let serverName = s.name {
+ servers.append(Server(name: serverName, description: s.description, address: s.address, port: Int(s.port), users: Int(s.users)))
}
}
-
+ return servers
}
}
diff --git a/Hotline/Models/Server.swift b/Hotline/Models/Server.swift
index c2063ea..5a6ba80 100644
--- a/Hotline/Models/Server.swift
+++ b/Hotline/Models/Server.swift
@@ -1,16 +1,26 @@
import SwiftUI
-@Observable final class Server {
+@Observable final class Server: Identifiable, Equatable {
+ let id: UUID = UUID()
let name: String
let description: String?
- let users: Int = 0
+ let users: Int
let address: String
let port: Int
- init(name: String, description: String?, address: String, port: Int) {
+ init(name: String, description: String?, address: String, port: Int, users: Int = 0) {
self.name = name
self.description = description
self.address = address
self.port = port
+ self.users = users
+ }
+
+ static func == (lhs: Server, rhs: Server) -> Bool {
+ return lhs.id == rhs.id
+ }
+
+ static func == (lhs: HotlineServer, rhs: Server) -> Bool {
+ return lhs.name == rhs.name && lhs.address == rhs.address && lhs.port == rhs.port
}
}
diff --git a/Hotline/Models/Tracker.swift b/Hotline/Models/Tracker.swift
index c9dfb5c..66d7976 100644
--- a/Hotline/Models/Tracker.swift
+++ b/Hotline/Models/Tracker.swift
@@ -1,20 +1,22 @@
import SwiftUI
@Observable final class Tracker {
+ static let defaultPort: Int = 5498
+
let service: HotlineTrackerClient
let address: String
let port: Int
var servers: [Server] = []
- init(address: String, port: Int = 5498, service: HotlineTrackerClient) {
+ init(address: String, port: Int = defaultPort, service: HotlineTrackerClient) {
self.address = address
self.port = port
self.service = service
}
func fetchServers() {
- self.service.fetch2(address: self.address, port: self.port) { servers in
- self.servers = servers
- }
+// self.service.fetch2(address: self.address, port: self.port) { hotlineServers in
+// self.servers = servers
+// }
}
}