summaryrefslogtreecommitdiff
path: root/Sora/Data/Settings/Settings.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-27 20:52:34 -0800
committerFuwn <[email protected]>2025-02-27 20:52:34 -0800
commitbcf51684c9f2346597bfc11d6de47f682c14e416 (patch)
treec70d8cd5fc396470aa37f390290590d20e1b6787 /Sora/Data/Settings/Settings.swift
parentfeat: Development commit (diff)
downloadsora-testing-bcf51684c9f2346597bfc11d6de47f682c14e416.tar.xz
sora-testing-bcf51684c9f2346597bfc11d6de47f682c14e416.zip
feat: Development commit
Diffstat (limited to 'Sora/Data/Settings/Settings.swift')
-rw-r--r--Sora/Data/Settings/Settings.swift179
1 files changed, 0 insertions, 179 deletions
diff --git a/Sora/Data/Settings/Settings.swift b/Sora/Data/Settings/Settings.swift
deleted file mode 100644
index ee7a15e..0000000
--- a/Sora/Data/Settings/Settings.swift
+++ /dev/null
@@ -1,179 +0,0 @@
-import SwiftUI
-
-class Settings: ObservableObject {
- @AppStorage("detailViewType")
- var detailViewQuality: BooruPostFileType = .original
-
- @AppStorage("thumbnailQuality")
- var thumbnailQuality: BooruPostFileType = .preview
-
- @AppStorage("searchSuggestionsMode")
- var searchSuggestionsMode: SettingsSearchSuggestionsMode = .disabled
-
- @AppStorage("thumbnailGridColumns")
- var thumbnailGridColumns = 2
-
- @AppStorage("bookmarks")
- private var bookmarksData = Data()
-
- @AppStorage("preferredBooru")
- var preferredBooru: BooruProvider = .safebooru
-
- @AppStorage("enableShareShortcut")
- var enableShareShortcut = false
-
- @AppStorage("displayRatings")
- private var displayRatingsData = Settings.defaultRatingsData()
-
- @AppStorage("blurRatings")
- private var blurRatingsData = Settings.initializeRatingsData(
- enabledRatings: [.explicit]
- )
-
- @AppStorage("displayDetailsInformationBar")
- var displayDetailsInformationBar = true
-
- @AppStorage("searchHistory")
- private var searchHistoryData = Data()
-
- #if os(macOS)
- @AppStorage("saveTagsToFile")
- var saveTagsToFile = false
- #endif
-
- var bookmarks: [Bookmark] {
- get {
- if let bookmarks = try? JSONDecoder().decode([Bookmark].self, from: bookmarksData) {
- return bookmarks
- }
-
- return []
- }
-
- set {
- if let data = try? JSONEncoder().encode(newValue) {
- bookmarksData = data
- }
- }
- }
-
- var displayRatings: [BooruRating] {
- get { Self.decodeRatings(from: displayRatingsData) }
- set { if let data = Self.encodeRatings(newValue) { displayRatingsData = data } }
- }
-
- var blurRatings: [BooruRating] {
- get { Self.decodeRatings(from: blurRatingsData) }
- 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 {
- initializeRatingsData(enabledRatings: BooruRating.allCases)
- }
-
- private static func initializeRatingsData(enabledRatings: [BooruRating]) -> Data {
- var ratings: [BooruRating] = []
-
- for rating in enabledRatings {
- ratings.append(rating)
- }
-
- do {
- return try JSONEncoder().encode(ratings)
- } catch {
- debugPrint("Settings.initializeRatingsData: \(error)")
-
- return Data()
- }
- }
-
- private static func decodeRatings(from data: Data) -> [BooruRating] {
- if let ratings = try? JSONDecoder().decode([BooruRating].self, from: data) {
- return ratings
- }
-
- return BooruRating.allCases
- }
-
- private static func encodeRatings(_ ratings: [BooruRating]) -> Data? {
- try? JSONEncoder().encode(ratings)
- }
-
- func resetToDefaults() {
- detailViewQuality = .original
- thumbnailQuality = .preview
- searchSuggestionsMode = .disabled
- thumbnailGridColumns = 2
- preferredBooru = .safebooru
- enableShareShortcut = false
- displayRatingsData = Self.defaultRatingsData()
- blurRatingsData = Self.initializeRatingsData(enabledRatings: [.explicit])
- displayDetailsInformationBar = true
-
- #if os(macOS)
- saveTagsToFile = false
- #endif
- }
-
- func addBookmark(provider: BooruProvider, tags: [String]) {
- var currentBookmarks = bookmarks
-
- currentBookmarks.append(Bookmark(provider: provider, tags: tags.map { $0.lowercased() }))
-
- bookmarks = currentBookmarks
- }
-
- func removeBookmark(at index: IndexSet) {
- var currentBookmarks = bookmarks
-
- currentBookmarks.remove(atOffsets: index)
-
- bookmarks = currentBookmarks
- }
-
- func removeBookmark(withTags tags: [String]) {
- var currentBookmarks = bookmarks
-
- currentBookmarks.removeAll { bookmark in
- bookmark.tags.contains(where: tags.contains)
- }
-
- bookmarks = currentBookmarks
- }
-
- func removeBookmark(withID: UUID) {
- var currentBookmarks = bookmarks
-
- currentBookmarks.removeAll { bookmark in
- bookmark.id == withID
- }
-
- bookmarks = currentBookmarks
- }
-}