diff --git a/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift b/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift index 9101bff..13e15e2 100644 --- a/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift +++ b/Sources/Packages/Sources/SecureEnclaveSecretKit/SecureEnclaveStore.swift @@ -164,7 +164,7 @@ extension SecureEnclave { } public func reloadSecrets() { - reloadSecretsInternal() + reloadSecretsInternal(notifyAgent: false) } } @@ -176,11 +176,14 @@ extension SecureEnclave.Store { /// Reloads all secrets from the store. /// - Parameter notifyAgent: A boolean indicating whether a distributed notification should be posted, notifying other processes (ie, the SecretAgent) to reload their stores as well. private func reloadSecretsInternal(notifyAgent: Bool = true) { + let before = secrets secrets.removeAll() loadSecrets() - NotificationCenter.default.post(name: .secretStoreReloaded, object: self) - if notifyAgent { - DistributedNotificationCenter.default().postNotificationName(.secretStoreUpdated, object: nil, deliverImmediately: true) + if secrets != before { + NotificationCenter.default.post(name: .secretStoreReloaded, object: self) + if notifyAgent { + DistributedNotificationCenter.default().postNotificationName(.secretStoreUpdated, object: nil, deliverImmediately: true) + } } } diff --git a/Sources/Packages/Sources/SmartCardSecretKit/SmartCardStore.swift b/Sources/Packages/Sources/SmartCardSecretKit/SmartCardStore.swift index e00b5dc..ef7c23e 100644 --- a/Sources/Packages/Sources/SmartCardSecretKit/SmartCardStore.swift +++ b/Sources/Packages/Sources/SmartCardSecretKit/SmartCardStore.swift @@ -93,8 +93,12 @@ extension SmartCard { public func reloadSecrets() { DispatchQueue.main.async { self.isAvailable = self.tokenID != nil + let before = self.secrets self.secrets.removeAll() self.loadSecrets() + if self.secrets != before { + NotificationCenter.default.post(name: .secretStoreReloaded, object: self) + } } }