// SilentActionPrefs.swift // Tusker // // Created by Shadowfacts on 6/13/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import SwiftUI //struct SilentActionPermission: Identifiable { // let application: String // let permission: Preferences.Permission // // var id: String { // return application // } // // init(_ application: String, _ permission: Preferences.Permission) { // self.application = application // self.permission = permission // } //} struct SilentActionPrefs : View { // @MappedPreference(\.silentActions, fromPref: { // var array = [SilentActionPermission]() // for (application, permission) in $0 { // array.append(SilentActionPermission(application, permission)) // } // return array // }) // var silentActionPermissions: [SilentActionPermission] // @Preference(\.silentActions) var silentActions: [String: Preferences.Permission] @ObservedObject var preferences = Preferences.shared var body: some View { List(Array(preferences.silentActions.keys), id: \.self) { source in SilentActionPermissionCell(source: source) } .listStyle(GroupedListStyle()) // .navigationBarTitle("Silent Action Permissions") // see FB6838291 // List(Array(silentActions.keys).identified(by: \.self)) { application in // Text(application) //// Toggle(isOn: Binding(getValue: { self.silentActions[application] == .accepted }, setValue: { self.silentActions[application] = $0 ? .accepted : .rejected }), label: Text(application)) // }.listStyle(.grouped) } } struct SilentActionPermissionCell: View { @EnvironmentObject var preferences: Preferences let source: String // var binding: Binding init(source: String) { self.source = source // self.binding = Binding(getValue: { self.preferences.silentActions[source] == .accepted }, setValue: { self.preferences.silentActions[source] = $0 ? .accepted : .rejected }) } var body: some View { Toggle(isOn: Binding(get: { self.preferences.silentActions[self.source] == .accepted }, set: { self.preferences.silentActions[self.source] = $0 ? .accepted : .rejected })) { Text(verbatim: source) } } } #if DEBUG struct SilentActionPrefs_Previews : PreviewProvider { static var previews: some View { SilentActionPrefs().environmentObject(Preferences.shared) } } #endif