Handle interrupted pairing, artwork retries and revoked access reliably

This commit is contained in:
2026-09-12 21:41:37 +03:00
parent afa771198d
commit c461c26f7f
9 changed files with 411 additions and 46 deletions
+9
View File
@@ -0,0 +1,9 @@
import Foundation
// Injectable persistence keeps lifecycle tests away from the user's real Keychain.
struct ConnectionStorage {
var load: () throws -> Connection?
var save: (Connection) throws -> Void
var delete: () throws -> Void
static let keychain = Self(load: KeychainStore.load, save: KeychainStore.save, delete: KeychainStore.delete)
}