summaryrefslogtreecommitdiff
path: root/Sora/Data
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Data')
-rw-r--r--Sora/Data/Booru/BooruSearchQuery.swift2
-rw-r--r--Sora/Data/Settings/SettingsManager.swift34
2 files changed, 29 insertions, 7 deletions
diff --git a/Sora/Data/Booru/BooruSearchQuery.swift b/Sora/Data/Booru/BooruSearchQuery.swift
index a87e192..ddab4eb 100644
--- a/Sora/Data/Booru/BooruSearchQuery.swift
+++ b/Sora/Data/Booru/BooruSearchQuery.swift
@@ -1,6 +1,6 @@
import Foundation
-struct BooruSearchQuery: Codable, Equatable, Identifiable {
+struct BooruSearchQuery: Codable, Equatable, Identifiable, Hashable {
var id = UUID()
let provider: BooruProvider
let tags: [String]
diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift
index b46c333..6035de3 100644
--- a/Sora/Data/Settings/SettingsManager.swift
+++ b/Sora/Data/Settings/SettingsManager.swift
@@ -87,12 +87,6 @@ class SettingsManager: ObservableObject {
self.searchHistory.append(query)
}
- func removeFromSearchHistory(_ query: BooruSearchQuery) {
- if let index = self.searchHistory.firstIndex(of: query) {
- self.searchHistory.remove(at: index)
- }
- }
-
private static func defaultRatingsData() -> Data {
initializeRatingsData(enabledRatings: BooruRating.allCases)
}
@@ -178,4 +172,32 @@ class SettingsManager: ObservableObject {
bookmarks = currentBookmarks
}
+
+ func removeSearchHistoryEntry(at index: IndexSet) {
+ var currentSearchHistory = searchHistory
+
+ currentSearchHistory.remove(atOffsets: index)
+
+ searchHistory = currentSearchHistory
+ }
+
+ func removeSearchHistoryEntry(withTags tags: [String]) {
+ var currentSearchHistory = searchHistory
+
+ currentSearchHistory.removeAll { query in
+ query.tags.contains(where: tags.contains)
+ }
+
+ searchHistory = currentSearchHistory
+ }
+
+ func removeSearchHistoryEntry(withID: UUID) {
+ var currentSearchHistory = searchHistory
+
+ currentSearchHistory.removeAll { query in
+ query.id == withID
+ }
+
+ searchHistory = currentSearchHistory
+ }
}