diff options
Diffstat (limited to 'Sora/Data')
| -rw-r--r-- | Sora/Data/Booru/BooruSearchQuery.swift | 2 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 34 |
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 + } } |