summaryrefslogtreecommitdiff
path: root/Sora/Views/Settings/Section
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/Views/Settings/Section
parentfeat: Development commit (diff)
downloadsora-testing-f527ede88d974271a0c485e297ba9278909f53bb.tar.xz
sora-testing-f527ede88d974271a0c485e297ba9278909f53bb.zip
feat: Development commit
Diffstat (limited to 'Sora/Views/Settings/Section')
-rw-r--r--Sora/Views/Settings/Section/SettingsContentRatingsView.swift74
-rw-r--r--Sora/Views/Settings/Section/SettingsThumbnailsView.swift6
2 files changed, 76 insertions, 4 deletions
diff --git a/Sora/Views/Settings/Section/SettingsContentRatingsView.swift b/Sora/Views/Settings/Section/SettingsContentRatingsView.swift
new file mode 100644
index 0000000..7053481
--- /dev/null
+++ b/Sora/Views/Settings/Section/SettingsContentRatingsView.swift
@@ -0,0 +1,74 @@
+import SwiftUI
+
+struct SettingsContentRatingsView: View {
+ @EnvironmentObject var settings: Settings
+
+ var body: some View {
+ List {
+ Section(header: Text("Display Content Ratings")) {
+ ForEach(BooruRating.allCases, id: \.self) { rating in
+ Toggle(
+ rating.rawValue,
+ isOn: Binding(
+ get: {
+ settings.displayRatings.contains(rating)
+ },
+ set: { isOn in
+ setRating(
+ ratingFor: &settings.displayRatings,
+ isOn: isOn,
+ rating: rating
+ )
+ }
+ )
+ )
+ }
+ }
+
+ Section(header: Text("Blur Content Ratings")) {
+ ForEach(BooruRating.allCases, id: \.self) { rating in
+ Toggle(
+ rating.rawValue,
+ isOn: Binding(
+ get: { settings.blurRatings.contains(rating) },
+ set: { isOn in
+ setRating(
+ ratingFor: &settings.blurRatings,
+ isOn: isOn,
+ rating: rating
+ )
+ }
+ )
+ )
+ }
+ }
+ }
+ .navigationTitle(Text("Content Filtering"))
+ #if !os(macOS)
+ .navigationBarTitleDisplayMode(.inline)
+ #endif
+ }
+
+ func setRating(
+ ratingFor: inout [BooruRating],
+ isOn: Bool,
+ rating: BooruRating
+ ) {
+ var newRatings = ratingFor
+
+ if isOn {
+ if !newRatings.contains(rating) {
+ newRatings.append(rating)
+ }
+ } else {
+ newRatings.removeAll { $0 == rating }
+ }
+
+ ratingFor = newRatings
+ }
+}
+
+#Preview {
+ SettingsContentRatingsView()
+ .environmentObject(Settings())
+}
diff --git a/Sora/Views/Settings/Section/SettingsThumbnailsView.swift b/Sora/Views/Settings/Section/SettingsThumbnailsView.swift
index f787e59..0491d04 100644
--- a/Sora/Views/Settings/Section/SettingsThumbnailsView.swift
+++ b/Sora/Views/Settings/Section/SettingsThumbnailsView.swift
@@ -22,10 +22,8 @@ struct SettingsThumbnailsView: View {
)
#endif
- Toggle("Show NSFW Posts", isOn: $settings.showNSFWPosts)
-
- if settings.showNSFWPosts {
- Toggle("Blur NSFW Thumbnails", isOn: $settings.blurNSFWThumbnails)
+ NavigationLink(destination: SettingsContentRatingsView()) {
+ Text("Content Filtering")
}
}
}