// // SettingsDetailAccountView.swift // Multiplatform iOS // // Created by Rizwan on 08/07/20. // Copyright © 2020 Ranchero Software. All rights reserved. // import SwiftUI import Combine import Account import RSWeb import RSCore struct SettingsDetailAccountView: View { @Environment(\.presentationMode) var presentationMode @ObservedObject var settingsModel: SettingsDetailAccountModel @State private var isFeedbinCredentialsPresented = false @State private var isDeleteAlertPresented = false init(_ account: Account) { settingsModel = SettingsDetailAccountModel.init(account) } var body: some View { List { Section(header:AccountHeaderImageView(image: settingsModel.accountImage)) { HStack { TextField(settingsModel.defaultName, text: $settingsModel.name) } Toggle(isOn: $settingsModel.isActive) { Text("Active") } } if settingsModel.isCredentialsAvailable { Section { HStack { Spacer() Button(action: { self.isFeedbinCredentialsPresented.toggle() }) { Text("Credentials") } Spacer() } } .sheet(isPresented: $isFeedbinCredentialsPresented) { self.settingsCredentialsAccountView } } if settingsModel.isDeletable { Section { HStack { Spacer() Button(action: { self.isDeleteAlertPresented.toggle() }) { Text("Delete Account").foregroundColor(.red) } Spacer() } .alert(isPresented: $isDeleteAlertPresented) { Alert( title: Text("Are you sure you want to delete \"\(settingsModel.nameForDisplay)\"?"), primaryButton: Alert.Button.default( Text("Delete"), action: { self.settingsModel.delete() self.dismiss() }), secondaryButton: Alert.Button.cancel() ) } } } } .listStyle(InsetGroupedListStyle()) .navigationBarTitle(Text(verbatim: settingsModel.nameForDisplay), displayMode: .inline) } var settingsCredentialsAccountView: SettingsCredentialsAccountView { return SettingsCredentialsAccountView(account: settingsModel.account) } func dismiss() { presentationMode.wrappedValue.dismiss() } } struct SettingsDetailAccountView_Previews: PreviewProvider { static var previews: some View { return SettingsDetailAccountView(AccountManager.shared.defaultAccount) } }