aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/ServerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-20 15:33:33 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-20 15:33:33 -0800
commit5658209bd322449f4b54fa4a3047a485cc2ed32c (patch)
tree1eb82432ffb95873f1ff1b275e8eabfb74f1e14c /Hotline/macOS/ServerView.swift
parentcc19df82bab213bd628792e0b3eca8c2ee986506 (diff)
Add refresh button to Servers window. Fix styling on disclosure arrow. Remove icons from news list. Trying tooltips on some buttons.
Diffstat (limited to 'Hotline/macOS/ServerView.swift')
-rw-r--r--Hotline/macOS/ServerView.swift34
1 files changed, 26 insertions, 8 deletions
diff --git a/Hotline/macOS/ServerView.swift b/Hotline/macOS/ServerView.swift
index eca6f54..d858c6e 100644
--- a/Hotline/macOS/ServerView.swift
+++ b/Hotline/macOS/ServerView.swift
@@ -2,6 +2,7 @@ import SwiftUI
enum MenuItemType {
case banner
+ case progress
case chat
case news
case messageBoard
@@ -70,6 +71,7 @@ private func connectionStatusToProgress(status: HotlineClientStatus) -> Double {
struct ServerView: View {
@Environment(Hotline.self) private var model: Hotline
@State private var selectedCategoryId: MenuItem.ID?
+ @Environment(\.dismiss) var dismiss
let server: Server
@@ -89,8 +91,6 @@ struct ServerView: View {
var body: some View {
NavigationSplitView {
-// Divider()
-
List(selection: $selection) {
HStack {
@@ -111,9 +111,13 @@ struct ServerView: View {
.padding(.bottom, 16)
if model.status != .loggedIn {
- ProgressView(value: connectionStatusToProgress(status: model.status))
- .padding()
- .selectionDisabled()
+ HStack {
+ ProgressView(value: connectionStatusToProgress(status: model.status))
+ .padding()
+ }
+ .tag(MenuItem(name: "progress", image: "", type: .progress))
+ .frame(maxWidth: .infinity, minHeight: 60)
+ .selectionDisabled()
}
if model.status == .loggedIn {
@@ -137,8 +141,14 @@ struct ServerView: View {
Text("🙂")
.font(.headline)
if user.status.contains(.admin) {
- Text(user.name)
- .foregroundStyle(.red, .red.opacity(0.3))
+ if user.status.contains(.idle) {
+ Text(user.name)
+ .foregroundStyle(.red.opacity(0.5))
+ }
+ else {
+ Text(user.name)
+ .foregroundStyle(.red)
+ }
}
else if user.status.contains(.idle) {
Text(user.name)
@@ -155,11 +165,15 @@ struct ServerView: View {
}
}
}
+ .frame(minWidth: 200, idealWidth: 200)
} detail: {
if let selection = self.selection {
switch selection.type {
case .banner:
EmptyView()
+ case .progress
+ :
+ EmptyView()
case .chat:
ChatView()
case .news:
@@ -184,11 +198,15 @@ struct ServerView: View {
}
}
.onDisappear {
- print("DISCONNECTING FROM SERVER")
Task {
model.disconnect()
}
}
+ .onChange(of: model.status) {
+ if model.status == .disconnected {
+ dismiss()
+ }
+ }
}
}