aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Views/TrackerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-04 09:12:58 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-04 09:12:58 -0800
commit471546236b8991f61d26c0e3aa8ee48b83b983af (patch)
treeb74331a8c8ea61ee7e1eaedfc7bbd1686bbc4702 /Hotline/Views/TrackerView.swift
parent885119acdd27bd53ed3096285c3eca3e2d99ad70 (diff)
Starting to hash out a server view and tabs. Added research pdfs. etc.
Diffstat (limited to 'Hotline/Views/TrackerView.swift')
-rw-r--r--Hotline/Views/TrackerView.swift73
1 files changed, 73 insertions, 0 deletions
diff --git a/Hotline/Views/TrackerView.swift b/Hotline/Views/TrackerView.swift
new file mode 100644
index 0000000..5d1afe2
--- /dev/null
+++ b/Hotline/Views/TrackerView.swift
@@ -0,0 +1,73 @@
+import SwiftUI
+
+struct TrackerView: View {
+
+ // @Environment(\.modelContext) private var modelContext
+ // @Query private var items: [Item]
+
+ @Environment(HotlineClient.self) private var hotline
+ @Environment(HotlineTrackerClient.self) private var tracker
+
+ // @StateObject var tracker = HotlineTrackerClient(address: "hltracker.com")
+ // @StateObject var client = HotlineClient.shared
+
+ @State private var selectedServer: HotlineServer?
+ @State private var showingAgreement = false
+ @State private var showingConnectSheet = false
+
+ // @Bindable var trackerTest = tracker
+
+ var body: some View {
+ List(selection: $selectedServer) {
+ ForEach(tracker.servers) { server in
+ HStack {
+ Text("🌎")
+ Text(server.name!).bold()
+ Spacer()
+ Text("\(server.users)").opacity(0.6)
+ }
+ .listRowBackground(Color(white: 0.96))
+ .listRowInsets(EdgeInsets(top: 0, leading: 16.0, bottom: 0, trailing: 16.0))
+ .listRowSeparator(.visible, edges: VerticalEdge.Set.all)
+ .listRowSeparatorTint(Color(white: 1.0))
+ .tag(server)
+ }
+ }
+ .background(Color(white: 0.96))
+ .listStyle(.plain)
+ .frame(maxWidth: .infinity)
+ .task {
+ tracker.fetch()
+ }
+ .sheet(item: $selectedServer) { item in
+ TrackerServerView(server: item)
+ }
+ .sheet(isPresented: Binding(get: { hotline.agreement != nil }, set: { _ in })) {
+ AgreementView(text: hotline.agreement!)
+ }
+ .navigationTitle("Tracker")
+ .navigationBarTitleDisplayMode(.inline)
+ .toolbar {
+ ToolbarItem(placement: .topBarTrailing) {
+ Image(systemName: "gearshape.fill")
+ }
+ // ToolbarItem(placement: .topBarTrailing) {
+ // Image(systemName: "camera.fill")
+ // }
+ // ToolbarItem(placement: .principal) {
+ // Text("Username")
+ // }
+ }
+ .refreshable {
+ tracker.fetch()
+ }
+ .interactiveDismissDisabled()
+ }
+}
+
+#Preview {
+ TrackerView()
+ .environment(HotlineClient())
+ .environment(HotlineTrackerClient(tracker: HotlineTracker("hltracker.com")))
+ // .modelContainer(for: Item.self, inMemory: true)
+}