import SwiftUI struct SettingsSectionContentRatingsView: View { @EnvironmentObject var settings: SettingsManager 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 { SettingsSectionContentRatingsView() .environmentObject(SettingsManager()) }