2023-01-14 16:03:39 +00:00
|
|
|
//
|
|
|
|
// ReportSelectRulesView.swift
|
|
|
|
// Tusker
|
|
|
|
//
|
|
|
|
// Created by Shadowfacts on 1/13/23.
|
|
|
|
// Copyright © 2023 Shadowfacts. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import SwiftUI
|
|
|
|
|
|
|
|
struct ReportSelectRulesView: View {
|
|
|
|
@ObservedObject var mastodonController: MastodonController
|
|
|
|
@ObservedObject var report: EditedReport
|
|
|
|
|
|
|
|
var selectedRuleIDs: [String] {
|
|
|
|
get {
|
|
|
|
if case .rules(let ids) = report.reason {
|
|
|
|
return ids
|
|
|
|
} else {
|
|
|
|
return []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
nonmutating set {
|
|
|
|
report.reason = .rules(newValue)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
init(mastodonController: MastodonController, report: EditedReport) {
|
|
|
|
self.mastodonController = mastodonController
|
|
|
|
self.report = report
|
|
|
|
}
|
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
List(mastodonController.instance.rules!) { rule in
|
|
|
|
Button {
|
|
|
|
if selectedRuleIDs.contains(rule.id) {
|
|
|
|
selectedRuleIDs.removeAll(where: { $0 == rule.id })
|
|
|
|
} else {
|
|
|
|
selectedRuleIDs.append(rule.id)
|
|
|
|
}
|
|
|
|
} label: {
|
|
|
|
HStack {
|
|
|
|
Text(rule.text)
|
|
|
|
.foregroundColor(.primary)
|
|
|
|
Spacer()
|
|
|
|
Image(systemName: "checkmark")
|
|
|
|
.foregroundColor(selectedRuleIDs.contains(rule.id) ? .accentColor : .clear)
|
|
|
|
}
|
|
|
|
}
|
2023-02-03 04:02:11 +00:00
|
|
|
.listRowBackground(Color.appGroupedCellBackground)
|
2023-01-14 16:03:39 +00:00
|
|
|
}
|
2023-02-03 04:02:11 +00:00
|
|
|
.withAppBackgroundIfAvailable()
|
2023-01-14 16:03:39 +00:00
|
|
|
.navigationTitle("Rules")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-03 04:02:11 +00:00
|
|
|
private extension View {
|
|
|
|
@available(iOS, obsoleted: 16.0)
|
|
|
|
@ViewBuilder
|
|
|
|
func withAppBackgroundIfAvailable() -> some View {
|
|
|
|
if #available(iOS 16.0, *) {
|
|
|
|
self
|
|
|
|
.scrollContentBackground(.hidden)
|
|
|
|
.background(Color.appGroupedBackground)
|
|
|
|
} else {
|
|
|
|
self
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-14 16:03:39 +00:00
|
|
|
//struct ReportSelectRulesView_Previews: PreviewProvider {
|
|
|
|
// static var previews: some View {
|
|
|
|
// ReportSelectRulesView()
|
|
|
|
// }
|
|
|
|
//}
|