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 {