diff options
Diffstat (limited to 'Hotline/Views/TrackerView.swift')
| -rw-r--r-- | Hotline/Views/TrackerView.swift | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/Hotline/Views/TrackerView.swift b/Hotline/Views/TrackerView.swift index 2fc27c7..01f4311 100644 --- a/Hotline/Views/TrackerView.swift +++ b/Hotline/Views/TrackerView.swift @@ -11,7 +11,7 @@ struct TrackerConnectView: View { @State private var password = "" @State private var connecting = false - func connectionStatusToProgress(status: HotlineNewClientStatus) -> Double { + func connectionStatusToProgress(status: HotlineClientStatus) -> Double { switch status { case .disconnected: return 0.0 @@ -26,8 +26,6 @@ struct TrackerConnectView: View { } } - - var body: some View { VStack(alignment: .leading) { if !connecting { @@ -176,7 +174,7 @@ struct TrackerView: View { return desc.count > 0 && desc != server.name } - func connectionStatusToProgress(status: HotlineNewClientStatus) -> Double { + func connectionStatusToProgress(status: HotlineClientStatus) -> Double { switch status { case .disconnected: return 0.0 @@ -196,7 +194,12 @@ struct TrackerView: View { } func updateServers() async { - self.servers = await model.getServers(address: "tracker.preterhuman.net") +// "hltracker.com" +// "tracker.preterhuman.net" +// "hotline.ubersoft.org" +// "tracked.nailbat.com" +// "hotline.duckdns.org" + self.servers = await model.getServers(address: "tracked.agent79.org") } var body: some View { @@ -347,11 +350,28 @@ struct TrackerView: View { await updateServers() initialLoadComplete = true } + .onOpenURL(perform: { url in + guard url.scheme == "hotline" else { + return + } + + if let address = url.host() { + let login = url.user(percentEncoded: false) ?? "" + let password = url.password(percentEncoded: false) ?? "" + let port = url.port ?? Server.defaultPort + + Task { + model.disconnect() + let _ = await model.login(server: Server(name: address, description: nil, address: address, port: port, users: 0), login: login, password: password, username: "bolt", iconID: 128) + } + + // TODO: Find a better way to show login status when trying to connect outside of the Tracker server list. Perhaps this opens the connect sheet prefilled. + } + }) } } #Preview { TrackerView() - .environment(Hotline(trackerClient: HotlineTrackerClient(), client: HotlineNewClient())) - // .modelContainer(for: Item.self, inMemory: true) + .environment(Hotline(trackerClient: HotlineTrackerClient(), client: HotlineClient())) } |