aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Views/ServerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-06 13:52:20 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-06 13:52:20 -0800
commitc0068f11c51bb587c16dfacb73629b3c6fb67fc8 (patch)
tree20753433f348b03bb590e0fe6a4cafbe56f4c859 /Hotline/Views/ServerView.swift
parent06a2166415bca7e5fe32eac505859bdd690ab8e0 (diff)
Further work on UI organization
Diffstat (limited to 'Hotline/Views/ServerView.swift')
-rw-r--r--Hotline/Views/ServerView.swift126
1 files changed, 34 insertions, 92 deletions
diff --git a/Hotline/Views/ServerView.swift b/Hotline/Views/ServerView.swift
index ecb13a1..8e50d83 100644
--- a/Hotline/Views/ServerView.swift
+++ b/Hotline/Views/ServerView.swift
@@ -1,11 +1,8 @@
import SwiftUI
struct ServerView: View {
- @Environment(HotlineState.self) private var appState
@Environment(HotlineClient.self) private var hotline
- @Environment(HotlineTrackerClient.self) private var tracker
-
- let server: HotlineServer
+ @Environment(\.colorScheme) var colorScheme
func connectionStatusTitle(status: HotlineClientStatus) -> String {
switch(status) {
@@ -26,102 +23,47 @@ struct ServerView: View {
return Double(status.rawValue) / Double(HotlineClientStatus.loggedIn.rawValue)
}
+ enum Tab {
+ case chat, users, news, messageBoard, files
+ }
+
var body: some View {
- @Bindable var config = appState
-
- NavigationStack {
- if hotline.connectionStatus != .loggedIn {
- VStack {
- Spacer()
- VStack(alignment: .center) {
- Text("🌎").font(.largeTitle)
- Text(server.name!).font(.title3).fontWeight(.medium)
- Text(server.description!).opacity(0.6).font(.title3)
- Text(server.address).opacity(0.6).font(.title3)
- }
- Spacer()
- HStack(alignment: .center) {
- if hotline.connectionStatus == .disconnected {
- ProgressView(connectionStatusTitle(status: hotline.connectionStatus), value: connectionProgress(status: hotline.connectionStatus))
- Button("Connect") {
- hotline.connect(to: server)
- // config.dismissTracker()
- }
- .bold()
- .padding(EdgeInsets(top: 16, leading: 24, bottom: 16, trailing: 24))
- .frame(maxWidth: .infinity)
- .foregroundColor(.black)
- .background(LinearGradient(gradient: Gradient(colors: [Color(white: 0.95), Color(white: 0.91)]), startPoint: .top, endPoint: .bottom))
- .overlay(
- RoundedRectangle(cornerRadius: 10.0).stroke(.black, lineWidth: 3).opacity(0.4)
- )
- .cornerRadius(10.0)
- }
- else {
- ProgressView("", value: Double(hotline.connectionStatus.rawValue / HotlineClientStatus.loggedIn.rawValue))
- }
- }
+ TabView {
+ ChatView()
+ .tabItem {
+ Image(systemName: "message")
}
- .padding()
- }
- else {
- TabView {
- ChatView()
- .navigationTitle(hotline.server?.name ?? "Hotline")
- .navigationBarTitleDisplayMode(.inline)
- .navigationBarItems(
- leading: Button(action: {
- appState.presentTracker()
- }) {
- Image(systemName: "globe.americas.fill") // Hamburger icon or similar
- .imageScale(.large)
- }
- )
- // .toolbarBackground(.visible, for: .navigationBar)
- // .toolbarBackground(.red, for: .navigationBar)
- .tabItem {
- Image(systemName: "message")
- }
-
- UserListView()
- .navigationTitle("User List")
- .navigationBarTitleDisplayMode(.inline)
- .tabItem {
- Image(systemName: "person.fill")
- }
-
- Text("News")
- .tabItem {
- Image(systemName: "newspaper")
- }
-
- MessageBoardView()
- .navigationTitle("Message Board")
- .navigationBarTitleDisplayMode(.inline)
- .tabItem {
- Image(systemName: "pin")
- }
-
- FilesView()
- .navigationTitle("Files")
- .navigationBarTitleDisplayMode(.inline)
- .tabItem {
- Image(systemName: "folder").tint(.black)
- }
+ .tag(Tab.chat)
+
+ UserListView()
+ .tabItem {
+ Image(systemName: "person.fill")
}
- .accentColor(.black)
- }
+ .tag(Tab.users)
- // .sheet(isPresented: Binding(get: { hotline.connectionStatus != .loggedIn }, set: { _ in })) {
- // TrackerView()
- // }
+ NewsView()
+ .tabItem {
+ Image(systemName: "newspaper")
+ }
+ .tag(Tab.news)
+
+ MessageBoardView()
+ .tabItem {
+ Image(systemName: "pin")
+ }
+ .tag(Tab.messageBoard)
+
+ FilesView()
+ .tabItem {
+ Image(systemName: "folder").tint(.black)
+ }
+ .tag(Tab.files)
}
+ .accentColor(colorScheme == .dark ? .white : .black)
}
}
#Preview {
- ServerView(server: HotlineServer(address: "192.168.1.1", port: 5050, users: 5, name: "Ye Olde Server", description: "This is a server"))
+ ServerView()
.environment(HotlineClient())
- .environment(HotlineTrackerClient(tracker: HotlineTracker("hltracker.com")))
- .environment(HotlineState())
}