diff --git a/Sources/DDGSync/DDGSync.swift b/Sources/DDGSync/DDGSync.swift index 1ee0a4f10..6fa9e5a54 100644 --- a/Sources/DDGSync/DDGSync.swift +++ b/Sources/DDGSync/DDGSync.swift @@ -42,7 +42,14 @@ public class DDGSync: DDGSyncing { } public var account: SyncAccount? { - try? dependencies.secureStore.account() + do { + return try dependencies.secureStore.account() + } catch { + if let syncError = error as? SyncError { + dependencies.errorEvents.fire(syncError, error: syncError) + } + return nil + } } public var scheduler: Scheduling { diff --git a/Sources/DDGSync/SyncError.swift b/Sources/DDGSync/SyncError.swift index ef3faad38..78b68c4e0 100644 --- a/Sources/DDGSync/SyncError.swift +++ b/Sources/DDGSync/SyncError.swift @@ -190,4 +190,14 @@ extension SyncError: CustomNSError { } } + public var errorUserInfo: [String: Any] { + switch self { + case .failedToReadSecureStore(let status), .failedToWriteSecureStore(let status), .failedToRemoveSecureStore(let status): + let underlyingError = NSError(domain: "secError", code: Int(status)) + return [NSUnderlyingErrorKey: underlyingError] + default: + return [:] + } + } + }