From 3e8a49c970233c07c73e406c6989748212534f1a Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Mon, 4 Jul 2022 19:08:16 +0200 Subject: [PATCH] Remove store value when set value is nil Fixes crash on removing active profile when current, due to setting nil activeProfileId in UserDefaults. --- .../PassepartoutUtils/Reusable/KeyValueStore.swift | 2 +- .../PassepartoutUtils/Reusable/UserDefaultsStore.swift | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/KeyValueStore.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/KeyValueStore.swift index ef4269d9..f26faaf3 100644 --- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/KeyValueStore.swift +++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/KeyValueStore.swift @@ -40,7 +40,7 @@ extension KeyStoreDomainLocation { } public protocol KeyValueStore { - func setValue(_ value: V, forLocation location: L) + func setValue(_ value: V?, forLocation location: L) func value(forLocation location: L) -> V? diff --git a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/UserDefaultsStore.swift b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/UserDefaultsStore.swift index 5dab0eeb..d8d36716 100644 --- a/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/UserDefaultsStore.swift +++ b/PassepartoutLibrary/Sources/PassepartoutUtils/Reusable/UserDefaultsStore.swift @@ -31,8 +31,12 @@ public struct UserDefaultsStore: KeyValueStore { public init(defaults: UserDefaults) { self.defaults = defaults } - - public func setValue(_ value: V, forLocation location: L) { + + public func setValue(_ value: V?, forLocation location: L) { + guard let value = value else { + defaults.removeObject(forKey: location.key) + return + } defaults.setValue(value, forKey: location.key) }