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/Views/Settings/Section | |
| parent | feat: Development commit (diff) | |
| download | sora-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.swift | 74 | ||||
| -rw-r--r-- | Sora/Views/Settings/Section/SettingsThumbnailsView.swift | 6 |
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") } } } |