diff options
Diffstat (limited to 'Sora/Data/Settings')
| -rw-r--r-- | Sora/Data/Settings/Settings.swift | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Sora/Data/Settings/Settings.swift b/Sora/Data/Settings/Settings.swift index fc0a0cc..e708d5b 100644 --- a/Sora/Data/Settings/Settings.swift +++ b/Sora/Data/Settings/Settings.swift @@ -37,6 +37,9 @@ class Settings: ObservableObject { @AppStorage("displayDetailsInformationBar") var displayDetailsInformationBar = true + @AppStorage("searchHistory") + private var searchHistoryData = Data() + #if os(macOS) @AppStorage("saveTagsToFile") var saveTagsToFile = true @@ -68,6 +71,32 @@ class Settings: ObservableObject { set { if let data = Self.encodeRatings(newValue) { blurRatingsData = data } } } + var searchHistory: [BooruSearchQuery] { + get { + if let history = try? JSONDecoder().decode([BooruSearchQuery].self, from: searchHistoryData) { + return history + } + + return [] + } + + set { + if let data = try? JSONEncoder().encode(newValue) { + searchHistoryData = data + } + } + } + + func appendToSearchHistory(_ query: BooruSearchQuery) { + 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 { do { return try JSONEncoder().encode(BooruRating.allCases) |