summaryrefslogtreecommitdiff
path: root/DomainDig/DomainViewModel.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-25 00:41:34 -0500
committerChristian Cleberg <[email protected]>2026-04-25 00:41:34 -0500
commit535bb0ff0f64d57be1074e33ceb42f598f80205b (patch)
tree7e8cf8c86c226c1994555b121218484c05a5bdd4 /DomainDig/DomainViewModel.swift
parent1715e59287a7b48b29ed8cbf2cd45fcc92ec3126 (diff)
downloaddomain-dig-535bb0ff0f64d57be1074e33ceb42f598f80205b.tar.gz
domain-dig-535bb0ff0f64d57be1074e33ceb42f598f80205b.tar.bz2
domain-dig-535bb0ff0f64d57be1074e33ceb42f598f80205b.zip
DomainDig v4.1.0: Add a full local data reset flow in Data Management
- add a destructive Delete All Data action with confirmation, progress, success, and failure handling - centralize wipe behavior in DataResetService instead of scattering delete logic in views - clear local persistence, temp/export files, integration secrets, notifications, caches, and in-memory app state - reset sync, purchase, and integration services after wipe so the app returns to a clean first-launch state Polish batch and empty-state UX - present the batch sweep summary after manual bulk searches complete, not only from Watchlist - align the Workflows empty state styling with other empty states by removing the extra background card treatment Bump the project version from 4.0.0 to 4.1.0
Diffstat (limited to 'DomainDig/DomainViewModel.swift')
-rw-r--r--DomainDig/DomainViewModel.swift40
1 files changed, 40 insertions, 0 deletions
diff --git a/DomainDig/DomainViewModel.swift b/DomainDig/DomainViewModel.swift
index b65c6df..1d75221 100644
--- a/DomainDig/DomainViewModel.swift
+++ b/DomainDig/DomainViewModel.swift
@@ -953,6 +953,46 @@ final class DomainViewModel {
refreshDataLifecycleSummary()
}
+ func applyLocalDataReset() async {
+ domain = ""
+ bulkInput = ""
+ reset()
+
+ recentSearches = []
+ savedDomains = []
+ trackedDomains = []
+ history = []
+ workflows = []
+ historySearchText = ""
+ historyDateFilter = .all
+ historyChangeFilter = .all
+ historySortOption = .newest
+ timelineGrouping = .relativeDay
+ timelineDomainFilter = ""
+ watchlistSearchText = ""
+ watchlistFilter = .all
+ watchlistSortOption = .pinned
+ dashboardSearchText = ""
+ dashboardFilter = .all
+ monitoringSettings = MonitoringSettings()
+ monitoringLogs = []
+ notificationsAuthorized = false
+ monitoringRunInProgress = false
+ monitoringStatusMessage = nil
+ portabilityStatusMessage = "All local data removed."
+ upgradePrompt = nil
+ isPaywallPresented = false
+ selectedSnapshotIDs.removeAll()
+ activeDomainDiff = nil
+ activeDiffChangeIndex = 0
+ latestBatchSweepSummary = nil
+ latestWorkflowRunSummary = nil
+ historyAutoPruneOption = Self.loadHistoryAutoPruneOption()
+ refreshDataLifecycleSummary()
+ await refreshUsageCredits()
+ await refreshMonitoringAuthorizationStatus()
+ }
+
func refreshMonitoringAuthorizationStatus() async {
let settings = await UNUserNotificationCenter.current().notificationSettings()
monitoringNotificationStatus = settings.authorizationStatus