Re-fetch everything from iCloud when the local store was recreated

On tvOS SwiftData keeps the store in the app group's Library/Caches,
which the system may purge. The CKSyncEngine tokens live in UserDefaults
and survive, so the next launch opened an empty store and fetched only
records changed since the old tokens; subscriptions and bookmarks that
had not changed since never came back.

DataManager now records whether the store file existed when the
container opened, and the sync engine clears its persisted state once
per launch when it did not, so the first sync after a loss is a full
fetch. Also log the store path and a persistent-store failure that
previously fell back to in-memory storage silently.
This commit is contained in:
Arkadiusz Fal
2026-10-07 23:59:56 +02:00
parent bc6ad55f38
commit b9e7d88a12
3 changed files with 38 additions and 1 deletions

View File

@@ -196,6 +196,7 @@ final class AppEnvironment {
do {
dm = try DataManager(iCloudSyncEnabled: settings.iCloudSyncEnabled)
} catch {
LoggingService.shared.logCloudKitError("Persistent store unavailable, falling back to in-memory storage", error: error)
// Fall back to in-memory storage if persistent storage fails
dm = try! DataManager(inMemory: true)
}