diff options
| author | Fuwn <[email protected]> | 2025-02-22 12:26:31 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-22 12:26:31 -0800 |
| commit | f527ede88d974271a0c485e297ba9278909f53bb (patch) | |
| tree | 6d6ad0597c80fabe48a1de9981bafa968aaf6e29 /Sora/Data | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-f527ede88d974271a0c485e297ba9278909f53bb.tar.xz sora-testing-f527ede88d974271a0c485e297ba9278909f53bb.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Data')
| -rw-r--r-- | Sora/Data/Booru/BooruRating.swift | 8 | ||||
| -rw-r--r-- | Sora/Data/Settings/Settings.swift | 36 |
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 |