aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Views/TrackerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-05 15:57:27 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-05 15:57:27 -0800
commitb99219f16792be4a06a89f1f32a59f0bf97bba68 (patch)
tree4503d6f8b8c980c073c0e899da014bbffc4f7e94 /Hotline/Views/TrackerView.swift
parentb1a176ba3da2c7cf815084f0f8109008fe763809 (diff)
Experimenting with files.
Diffstat (limited to 'Hotline/Views/TrackerView.swift')
-rw-r--r--Hotline/Views/TrackerView.swift86
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)
}