summaryrefslogtreecommitdiff
path: root/Sora/Data
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
parentfeat: Development commit (diff)
downloadsora-testing-f527ede88d974271a0c485e297ba9278909f53bb.tar.xz
sora-testing-f527ede88d974271a0c485e297ba9278909f53bb.zip
feat: Development commit
Diffstat (limited to 'Sora/Data')
-rw-r--r--Sora/Data/Booru/BooruRating.swift8
-rw-r--r--Sora/Data/Settings/Settings.swift36
2 files changed, 40 insertions, 4 deletions
diff --git a/Sora/Data/Booru/BooruRating.swift b/Sora/Data/Booru/BooruRating.swift
index 8327868..f4814e8 100644
--- a/Sora/Data/Booru/BooruRating.swift
+++ b/Sora/Data/Booru/BooruRating.swift
@@ -1,7 +1,7 @@
-enum BooruRating {
- case explicit
- case questionable
- case safe
+enum BooruRating: String, CaseIterable, Decodable, Encodable {
+ case explicit = "Explicit"
+ case questionable = "Questionable"
+ case safe = "Safe"
init(_ string: String) {
switch string {
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