// // ExtensionsManagementView.swift // NetNewsWire-iOS // // Created by Stuart Breckenridge on 30/11/2022. // Copyright © 2022 Ranchero Software. All rights reserved. // import SwiftUI import Account struct ExtensionsManagementView: View { @State private var availableExtensionPointTypes = ExtensionPointManager.shared.availableExtensionPointTypes.sorted(by: { $0.title < $1.title }) @State private var showAddExtensionView: Bool = false @State private var showDeactivateAlert: Bool = false @State private var extensionToDeactivate: Dictionary.Element? = nil var body: some View { List { activeExtensionsSection } .navigationTitle(Text("MANAGE_EXTENSIONS", tableName: "Settings")) .toolbar { ToolbarItem(placement: .navigationBarTrailing) { Button { showAddExtensionView = true } label: { Image(systemName: "plus") } } } .sheet(isPresented: $showAddExtensionView) { AddExtensionListView() } .alert(Text("DEACTIVATE_EXTENSION_TITLE", tableName: "Settings"), isPresented: $showDeactivateAlert) { Button(role: .destructive) { ExtensionPointManager.shared.deactivateExtensionPoint(extensionToDeactivate!.value.extensionPointID) } label: { Text("DEACTIVATE", tableName: "Settings") } Button(role: .cancel) { extensionToDeactivate = nil } label: { Text("CANCEL_BUTTON_TITLE", tableName: "Buttons") } } message: { Text("DEACTIVATE_EXTENSION \(extensionToDeactivate?.value.title ?? "")", tableName: "Settings") } .onReceive(NotificationCenter.default.publisher(for: .ActiveExtensionPointsDidChange)) { _ in availableExtensionPointTypes = ExtensionPointManager.shared.availableExtensionPointTypes.sorted(by: { $0.title < $1.title }) } } private var activeExtensionsSection: some View { Section(header: Text("ACTIVE_EXTENSIONS", tableName: "Settings")) { ForEach(0..