@@ -188,6 +188,21 @@ private struct SnapshotRow: View {
|
||
| 188 | 188 |
DeviceColor(rawValue: profile?.colorTag ?? "")?.color ?? .neutralGray |
| 189 | 189 |
} |
| 190 | 190 |
|
| 191 |
+ private var metricCount: Int {
|
|
| 192 |
+ snapshot.typeCounts?.count ?? 0 |
|
| 193 |
+ } |
|
| 194 |
+ |
|
| 195 |
+ private var metricCountLabel: String {
|
|
| 196 |
+ metricCount == 1 ? "1 metric" : "\(metricCount) metrics" |
|
| 197 |
+ } |
|
| 198 |
+ |
|
| 199 |
+ private var hasOSVersionChange: Bool {
|
|
| 200 |
+ guard let baseline else { return false }
|
|
| 201 |
+ let currentVersion = snapshot.osVersion.trimmingCharacters(in: .whitespacesAndNewlines) |
|
| 202 |
+ let baselineVersion = baseline.osVersion.trimmingCharacters(in: .whitespacesAndNewlines) |
|
| 203 |
+ return !currentVersion.isEmpty && !baselineVersion.isEmpty && currentVersion != baselineVersion |
|
| 204 |
+ } |
|
| 205 |
+ |
|
| 191 | 206 |
var body: some View {
|
| 192 | 207 |
VStack(alignment: .leading, spacing: 4) {
|
| 193 | 208 |
HStack {
|
@@ -215,9 +230,15 @@ private struct SnapshotRow: View {
|
||
| 215 | 230 |
Text(deviceDisplayName) |
| 216 | 231 |
.font(.caption) |
| 217 | 232 |
.foregroundStyle(.secondary) |
| 218 |
- Label(snapshot.osVersion, systemImage: "gear") |
|
| 233 |
+ Label(metricCountLabel, systemImage: "list.bullet.rectangle") |
|
| 219 | 234 |
.font(.caption) |
| 220 | 235 |
.foregroundStyle(.secondary) |
| 236 |
+ if hasOSVersionChange {
|
|
| 237 |
+ Label("OS \(snapshot.osVersion)", systemImage: "gearshape.fill")
|
|
| 238 |
+ .font(.caption) |
|
| 239 |
+ .foregroundStyle(Color.warningAmber) |
|
| 240 |
+ .accessibilityLabel("OS version changed to \(snapshot.osVersion)")
|
|
| 241 |
+ } |
|
| 221 | 242 |
} |
| 222 | 243 |
|
| 223 | 244 |
// Chain indicators |