diff options
| author | Dustin Mierau <dustin@mierau.me> | 2023-12-04 09:12:58 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2023-12-04 09:12:58 -0800 |
| commit | 471546236b8991f61d26c0e3aa8ee48b83b983af (patch) | |
| tree | b74331a8c8ea61ee7e1eaedfc7bbd1686bbc4702 /Hotline/Views/TrackerView.swift | |
| parent | 885119acdd27bd53ed3096285c3eca3e2d99ad70 (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.swift | 73 |
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) +} |