summaryrefslogtreecommitdiff
path: root/DomainDig/WatchlistView.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-23 22:15:20 -0500
committerChristian Cleberg <[email protected]>2026-04-23 22:15:20 -0500
commitf045a5d339a796f40a9e958436ebc6f5314bdab8 (patch)
treec1d122f3ed7a9110dfcd001c86a56ed67980dfcc /DomainDig/WatchlistView.swift
parent6c23daaaba2a954220ece2afa7193dbdcad55c22 (diff)
downloaddomain-dig-f045a5d339a796f40a9e958436ebc6f5314bdab8.tar.gz
domain-dig-f045a5d339a796f40a9e958436ebc6f5314bdab8.tar.bz2
domain-dig-f045a5d339a796f40a9e958436ebc6f5314bdab8.zip
feat(v3.4.0): add backup, restore, and data portability
• introduce versioned DomainDig backup format • add full backup export/import with merge and replace modes • implement data validation and conflict handling • add partial exports for tracked domains, workflows, and history • add Data Portability settings section • support Files/iCloud Drive import and export • harden migrations for evolving local models • extend CLI with backup export and validation
Diffstat (limited to 'DomainDig/WatchlistView.swift')
-rw-r--r--DomainDig/WatchlistView.swift21
1 files changed, 21 insertions, 0 deletions
diff --git a/DomainDig/WatchlistView.swift b/DomainDig/WatchlistView.swift
index b4e5011..968914f 100644
--- a/DomainDig/WatchlistView.swift
+++ b/DomainDig/WatchlistView.swift
@@ -287,6 +287,18 @@ struct WatchlistRowView: View {
.font(appDensity.font(.caption2))
.foregroundStyle(.secondary)
+ HStack(spacing: 8) {
+ Text(trackedDomain.monitoringEnabled ? "Monitoring on" : "Monitoring off")
+ if let lastMonitoredAt = trackedDomain.lastMonitoredAt {
+ Text("Checked \(lastMonitoredAt.formatted(date: .omitted, time: .shortened))")
+ }
+ if let lastAlertAt = trackedDomain.lastAlertAt {
+ Text("Alert \(lastAlertAt.formatted(date: .omitted, time: .shortened))")
+ }
+ }
+ .font(appDensity.font(.caption2))
+ .foregroundStyle(.secondary)
+
indicatorRow
if let note = trackedDomain.note?.trimmingCharacters(in: .whitespacesAndNewlines), !note.isEmpty {
@@ -400,6 +412,15 @@ struct TrackedDomainDetailView: View {
}
Button {
+ viewModel.toggleMonitoring(for: liveTrackedDomain)
+ } label: {
+ Label(
+ liveTrackedDomain.monitoringEnabled ? "Disable Monitoring" : "Enable Monitoring",
+ systemImage: liveTrackedDomain.monitoringEnabled ? "bell.slash" : "bell"
+ )
+ }
+
+ Button {
noteDraft = liveTrackedDomain.note ?? ""
isEditingNote = true
} label: {