summaryrefslogtreecommitdiff
path: root/Sora/Data/Settings
diff options
context:
space:
mode:
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