Additional delete confirmation and sign out on config view

Changelog-Added: Add additional warning when deleting account
Closes: #729
This commit is contained in:
ericholguin
2023-03-02 16:16:42 -07:00
committed by William Casarin
parent a560d50366
commit 3fec9dd209

View File

@@ -12,8 +12,10 @@ import Combine
struct ConfigView: View { struct ConfigView: View {
let state: DamusState let state: DamusState
@Environment(\.colorScheme) var colorScheme
@Environment(\.dismiss) var dismiss @Environment(\.dismiss) var dismiss
@State var confirm_logout: Bool = false @State var confirm_logout: Bool = false
@State var delete_account_warning: Bool = false
@State var confirm_delete_account: Bool = false @State var confirm_delete_account: Bool = false
@State var show_privkey: Bool = false @State var show_privkey: Bool = false
@State var has_authenticated_locally: Bool = false @State var has_authenticated_locally: Bool = false
@@ -36,6 +38,10 @@ struct ConfigView: View {
_settings = ObservedObject(initialValue: state.settings) _settings = ObservedObject(initialValue: state.settings)
} }
func textColor() -> Color {
colorScheme == .light ? Color("DamusBlack") : Color("DamusWhite")
}
func authenticateLocally(completion: @escaping (Bool) -> Void) { func authenticateLocally(completion: @escaping (Bool) -> Void) {
// Need to authenticate only once while ConfigView is presented // Need to authenticate only once while ConfigView is presented
guard !has_authenticated_locally else { guard !has_authenticated_locally else {
@@ -201,10 +207,24 @@ struct ConfigView: View {
} }
} }
Section(NSLocalizedString("Sign Out", comment: "Section title for signing out")) {
Button(action: {
if state.keypair.privkey == nil {
notify(.logout, ())
} else {
confirm_logout = true
}
}, label: {
Label(NSLocalizedString("Sign out", comment: "Sidebar menu label to sign out of the account."), systemImage: "pip.exit")
.foregroundColor(textColor())
.frame(maxWidth: .infinity, alignment: .leading)
})
}
if state.is_privkey_user { if state.is_privkey_user {
Section(NSLocalizedString("Delete", comment: "Section title for deleting the user")) { Section(NSLocalizedString("Permanently Delete Account", comment: "Section title for deleting the user")) {
Button(NSLocalizedString("Delete Account", comment: "Button to delete the user's account."), role: .destructive) { Button(NSLocalizedString("Delete Account", comment: "Button to delete the user's account."), role: .destructive) {
confirm_delete_account = true delete_account_warning = true
} }
} }
} }
@@ -218,6 +238,15 @@ struct ConfigView: View {
} }
.navigationTitle(NSLocalizedString("Settings", comment: "Navigation title for Settings view.")) .navigationTitle(NSLocalizedString("Settings", comment: "Navigation title for Settings view."))
.navigationBarTitleDisplayMode(.large) .navigationBarTitleDisplayMode(.large)
.alert(NSLocalizedString("WARNING:\n\nTHIS WILL SIGN AN EVENT THAT DELETES THIS ACCOUNT.\n\nYOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.\n\n ARE YOU SURE YOU WANT TO CONTINUE?", comment: "Alert for deleting the users account."), isPresented: $delete_account_warning) {
Button(NSLocalizedString("Cancel", comment: "Cancel deleting the user."), role: .cancel) {
delete_account_warning = false
}
Button(NSLocalizedString("Continue", comment: "Continue with deleting the user.")) {
confirm_delete_account = true
}
}
.alert(NSLocalizedString("Permanently Delete Account", comment: "Alert for deleting the users account."), isPresented: $confirm_delete_account) { .alert(NSLocalizedString("Permanently Delete Account", comment: "Alert for deleting the users account."), isPresented: $confirm_delete_account) {
TextField(NSLocalizedString("Type DELETE to delete", comment: "Text field prompt asking user to type the word DELETE to confirm that they want to proceed with deleting their account. The all caps lock DELETE word should not be translated. Everything else should."), text: $delete_text) TextField(NSLocalizedString("Type DELETE to delete", comment: "Text field prompt asking user to type the word DELETE to confirm that they want to proceed with deleting their account. The all caps lock DELETE word should not be translated. Everything else should."), text: $delete_text)
Button(NSLocalizedString("Cancel", comment: "Cancel deleting the user."), role: .cancel) { Button(NSLocalizedString("Cancel", comment: "Cancel deleting the user."), role: .cancel) {