From fbff3db69a3f8bb19668117a60edb562c8db3ca4 Mon Sep 17 00:00:00 2001 From: Sven Tiigi Date: Thu, 2 Mar 2023 20:18:19 +0100 Subject: [PATCH] Added dedicated remove(presentedVersion:) API to WhatsNewVersionStore implementations https://github.com/SvenTiigi/WhatsNewKit/issues/64 --- .../Store/InMemoryWhatsNewVersionStore.swift | 20 ++++++++++++++++--- ...iquitousKeyValueWhatsNewVersionStore.swift | 15 ++++++++++++++ .../UserDefaultsWhatsNewVersionStore.swift | 15 ++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Sources/Store/InMemoryWhatsNewVersionStore.swift b/Sources/Store/InMemoryWhatsNewVersionStore.swift index 29e4ff9..04995ad 100644 --- a/Sources/Store/InMemoryWhatsNewVersionStore.swift +++ b/Sources/Store/InMemoryWhatsNewVersionStore.swift @@ -13,7 +13,7 @@ public final class InMemoryWhatsNewVersionStore { // MARK: Properties /// The Versions - public var versions: [WhatsNew.Version] + public var versions: Set // MARK: Initializer @@ -33,7 +33,7 @@ extension InMemoryWhatsNewVersionStore: WriteableWhatsNewVersionStore { public func save( presentedVersion version: WhatsNew.Version ) { - self.versions.append(version) + self.versions.insert(version) } } @@ -44,7 +44,21 @@ extension InMemoryWhatsNewVersionStore: ReadableWhatsNewVersionStore { /// The WhatsNew Versions that have been already been presented public var presentedVersions: [WhatsNew.Version] { - self.versions + .init(self.versions) + } + +} + +// MARK: - Remove + +public extension InMemoryWhatsNewVersionStore { + + /// Remove presented WhatsNew Version + /// - Parameter version: The presented WhatsNew Version that should be removed + func remove( + presentedVersion version: WhatsNew.Version + ) { + self.versions.remove(version) } } diff --git a/Sources/Store/NSUbiquitousKeyValueWhatsNewVersionStore.swift b/Sources/Store/NSUbiquitousKeyValueWhatsNewVersionStore.swift index a0dedc3..c4ca3d3 100644 --- a/Sources/Store/NSUbiquitousKeyValueWhatsNewVersionStore.swift +++ b/Sources/Store/NSUbiquitousKeyValueWhatsNewVersionStore.swift @@ -58,6 +58,21 @@ extension NSUbiquitousKeyValueWhatsNewVersionStore: ReadableWhatsNewVersionStore } +// MARK: - Remove + +public extension NSUbiquitousKeyValueWhatsNewVersionStore { + + /// Remove presented WhatsNew Version + /// - Parameter version: The presented WhatsNew Version that should be removed + func remove( + presentedVersion version: WhatsNew.Version + ) { + self.ubiquitousKeyValueStore + .removeObject(forKey: version.key) + } + +} + // MARK: - Remove all public extension NSUbiquitousKeyValueWhatsNewVersionStore { diff --git a/Sources/Store/UserDefaultsWhatsNewVersionStore.swift b/Sources/Store/UserDefaultsWhatsNewVersionStore.swift index 9603cce..0379254 100644 --- a/Sources/Store/UserDefaultsWhatsNewVersionStore.swift +++ b/Sources/Store/UserDefaultsWhatsNewVersionStore.swift @@ -55,6 +55,21 @@ extension UserDefaultsWhatsNewVersionStore: ReadableWhatsNewVersionStore { } +// MARK: - Remove + +public extension UserDefaultsWhatsNewVersionStore { + + /// Remove presented WhatsNew Version + /// - Parameter version: The presented WhatsNew Version that should be removed + func remove( + presentedVersion version: WhatsNew.Version + ) { + self.userDefaults + .removeObject(forKey: version.key) + } + +} + // MARK: - Remove all public extension UserDefaultsWhatsNewVersionStore {