From 535bb0ff0f64d57be1074e33ceb42f598f80205b Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Sat, 25 Apr 2026 00:41:34 -0500 Subject: 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 --- DomainDig/CloudSyncService.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'DomainDig/CloudSyncService.swift') diff --git a/DomainDig/CloudSyncService.swift b/DomainDig/CloudSyncService.swift index 1cf41d9..2cb4cfe 100644 --- a/DomainDig/CloudSyncService.swift +++ b/DomainDig/CloudSyncService.swift @@ -321,6 +321,20 @@ final class CloudSyncService { } } + func resetLocalStateAfterWipe() { + scheduledSyncTask?.cancel() + scheduledSyncTask = nil + syncTask?.cancel() + syncTask = nil + + let syncEnabled = defaults.bool(forKey: StorageKey.isEnabled) + isEnabled = syncEnabled + status = CloudSyncStatus(rawValue: defaults.string(forKey: StorageKey.status) ?? "") ?? (syncEnabled ? .synced : .disabled) + lastSyncDate = defaults.object(forKey: StorageKey.lastSyncDate) as? Date + lastErrorMessage = defaults.string(forKey: StorageKey.lastErrorMessage) + detailMessage = defaults.string(forKey: StorageKey.detailMessage) ?? "DomainDig stores synced data in your private iCloud account." + } + func acceptShare(metadata: CKShare.Metadata) async throws { guard let container = cloudKitContainer() else { throw CloudSyncRuntimeError.missingEntitlement -- cgit v1.2.3