summaryrefslogtreecommitdiff
path: root/Sora/Data/Settings
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-22 12:26:31 -0800
committerFuwn <[email protected]>2025-02-22 12:26:31 -0800
commitf527ede88d974271a0c485e297ba9278909f53bb (patch)
tree6d6ad0597c80fabe48a1de9981bafa968aaf6e29 /Sora/Data/Settings
parentfeat: Development commit (diff)
downloadsora-testing-f527ede88d974271a0c485e297ba9278909f53bb.tar.xz
sora-testing-f527ede88d974271a0c485e297ba9278909f53bb.zip
feat: Development commit
Diffstat (limited to 'Sora/Data/Settings')
-rw-r--r--Sora/Data/Settings/Settings.swift36
1 files changed, 36 insertions, 0 deletions
diff --git a/Sora/Data/Settings/Settings.swift b/Sora/Data/Settings/Settings.swift
index 5aac056..d925f62 100644
--- a/Sora/Data/Settings/Settings.swift
+++ b/Sora/Data/Settings/Settings.swift
@@ -33,6 +33,12 @@ class Settings: ObservableObject {
@AppStorage("enableShareShortcut")
var enableShareShortcut: Bool = false
+ @AppStorage("displayRatings")
+ private var displayRatingsData: Data = Settings.initialiseRatingsData()
+
+ @AppStorage("blurRatings")
+ private var blurRatingsData: Data = Settings.initialiseRatingsData()
+
var bookmarks: [Bookmark] {
get {
if let bookmarks = try? JSONDecoder().decode([Bookmark].self, from: bookmarksData) {
@@ -49,6 +55,36 @@ class Settings: ObservableObject {
}
}
+ 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 } }
+ }
+
+ private static func initialiseRatingsData() -> Data {
+ do {
+ return try JSONEncoder().encode(BooruRating.allCases)
+ } catch {
+ 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() {
#if DEBUG
detailViewType = .preview