forked from shadowfacts/Tusker
60 lines
1.6 KiB
Swift
60 lines
1.6 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|
|
}
|
|
.navigationTitle("Rules")
|
|
}
|
|
}
|
|
|
|
//struct ReportSelectRulesView_Previews: PreviewProvider {
|
|
// static var previews: some View {
|
|
// ReportSelectRulesView()
|
|
// }
|
|
//}
|