blob: c44fc658d9ea2827914eb52aa1dfe915a05cb7e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
import SwiftUI
struct WatchlistView: View {
@Bindable var viewModel: DomainViewModel
@Environment(\.dismiss) private var dismiss
var body: some View {
List {
if viewModel.watchedDomains.isEmpty {
Text("No watched domains")
.font(.system(.callout, design: .monospaced))
.foregroundStyle(.secondary)
.listRowBackground(Color(.systemGray6).opacity(0.5))
} else {
ForEach(viewModel.watchedDomains) { watchedDomain in
Button {
viewModel.domain = watchedDomain.domain
dismiss()
viewModel.run()
} label: {
VStack(alignment: .leading, spacing: 4) {
Text(watchedDomain.domain)
.font(.system(.callout, design: .monospaced))
.foregroundStyle(.primary)
Text(statusLabel(watchedDomain.lastKnownAvailability))
.font(.system(.caption2, design: .monospaced))
.foregroundStyle(statusColor(watchedDomain.lastKnownAvailability))
}
}
.listRowBackground(Color(.systemGray6).opacity(0.5))
}
.onDelete { offsets in
viewModel.removeWatchedDomains(at: offsets)
}
}
}
.scrollContentBackground(.hidden)
.background(Color.black)
.navigationTitle("Watchlist")
.toolbar {
if !viewModel.watchedDomains.isEmpty {
EditButton()
}
}
.preferredColorScheme(.dark)
}
private func statusLabel(_ status: DomainAvailabilityStatus?) -> String {
switch status {
case .available:
return "Available"
case .registered:
return "Registered"
case .unknown, .none:
return "Unknown"
}
}
private func statusColor(_ status: DomainAvailabilityStatus?) -> Color {
switch status {
case .available:
return .green
case .registered:
return .yellow
case .unknown, .none:
return .secondary
}
}
}
|