diff options
| author | Dustin Mierau <dustin@mierau.me> | 2023-12-05 15:57:27 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2023-12-05 15:57:27 -0800 |
| commit | b99219f16792be4a06a89f1f32a59f0bf97bba68 (patch) | |
| tree | 4503d6f8b8c980c073c0e899da014bbffc4f7e94 /Hotline/Views/TrackerView.swift | |
| parent | b1a176ba3da2c7cf815084f0f8109008fe763809 (diff) | |
Experimenting with files.
Diffstat (limited to 'Hotline/Views/TrackerView.swift')
| -rw-r--r-- | Hotline/Views/TrackerView.swift | 86 |
1 files changed, 53 insertions, 33 deletions
diff --git a/Hotline/Views/TrackerView.swift b/Hotline/Views/TrackerView.swift index edb2330..83a4ebf 100644 --- a/Hotline/Views/TrackerView.swift +++ b/Hotline/Views/TrackerView.swift @@ -11,48 +11,67 @@ struct TrackerView: View { @State private var selectedServer: HotlineServer? + func shouldDisplayDescription(server: HotlineServer) -> Bool { + guard let name = server.name, let desc = server.description else { + return false + } + + return desc.count > 0 && desc != name && !desc.contains(/^-+/) + } + var body: some View { @Bindable var config = appState - NavigationView { - List(selection: $selectedServer) { - ForEach(tracker.servers) { server in - TrackerServerView(server: server) + List(selection: $selectedServer) { + ForEach(tracker.servers) { server in + NavigationLink { + ServerView(server: server) + } label: { + HStack(alignment: .firstTextBaseline) { + Text("🌎").font(.title3) + VStack(alignment: .leading) { + Text(server.name!).font(.title3).fontWeight(.medium) + if shouldDisplayDescription(server: server) { + Text(server.description!).opacity(0.6).font(.title3) + } + } + } } } - .background(Color(white: 0.96)) - .listStyle(.plain) - .frame(maxWidth: .infinity) - .task { - tracker.fetch() - } -// .sheet(item: $selectedServer) { item in -// TrackerServerView(server: item) -// } - .refreshable { - tracker.fetch() + } + .background(Color.white) + .listStyle(.plain) + .listRowSpacing(1) + .frame(maxWidth: .infinity) + .task { + tracker.fetch() + } + // .sheet(item: $selectedServer) { item in + //// Text("HELLO") + // TrackerServerView(server: item) + // } + .refreshable { + await withCheckedContinuation { continuation in + tracker.fetch() { + continuation.resume() + } } - .navigationTitle("Tracker") - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .topBarTrailing) { - Button { - config.dismissTracker() - } label: { - Image(systemName: "xmark.circle.fill") - .symbolRenderingMode(.hierarchical) - .foregroundColor(.gray) - } + } + .navigationTitle("Tracker") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button { + config.dismissTracker() + } label: { + Image(systemName: "xmark.circle.fill") + .symbolRenderingMode(.hierarchical) + .foregroundColor(.gray) } - // ToolbarItem(placement: .topBarTrailing) { - // Image(systemName: "camera.fill") - // } - // ToolbarItem(placement: .principal) { - // Text("Username") - // } } } -// .interactiveDismissDisabled() + + // .interactiveDismissDisabled() } } @@ -60,5 +79,6 @@ struct TrackerView: View { TrackerView() .environment(HotlineClient()) .environment(HotlineTrackerClient(tracker: HotlineTracker("hltracker.com"))) + .environment(HotlineState()) // .modelContainer(for: Item.self, inMemory: true) } |