Minimal Settings screen UI (#85)

* #37 Remove sign out button from home screen

* #37 Move crash button visibility flag to BuildSettings, import BuildSettings from test targets

* #37 Add log out button into the settings screen

* #37 Add version into the settings screen

* #37 enhance bug report parameters

* #37 Remove sign out button from home screen

* #37 Move crash button visibility flag to BuildSettings, import BuildSettings from test targets

* #37 Add log out button into the settings screen

* #37 Add version into the settings screen

* #37 enhance bug report parameters

* #37 Add changelog

* #37 Fix code smells and PR remarks
This commit is contained in:
ismailgulek
2022-06-20 15:27:02 +03:00
committed by GitHub
parent 40e51fb157
commit 591f835811
17 changed files with 104 additions and 64 deletions
@@ -19,6 +19,8 @@ import SwiftUI
struct Settings: View {
// MARK: Private
@State private var showingLogoutConfirmation = false
// MARK: Public
@@ -28,24 +30,45 @@ struct Settings: View {
var body: some View {
Form {
Button { context.send(viewAction: .reportBug) } label: {
Text(ElementL10n.sendBugReport)
}
.frame(maxWidth: .infinity)
.padding(.vertical, 16)
.accessibilityIdentifier("reportBugButton")
Section {
Button { context.send(viewAction: .reportBug) } label: {
Text(ElementL10n.sendBugReport)
}
.foregroundColor(Color.element.primaryContent)
.accessibilityIdentifier("reportBugButton")
if context.viewState.crashButtonVisible {
Button { context.send(viewAction: .crash) } label: {
Text("Crash the app")
if BuildSettings.settingsCrashButtonVisible {
Button("Crash the app",
role: .destructive) { context.send(viewAction: .crash)
}
.accessibilityIdentifier("crashButton")
}
}
Section {
Button { showingLogoutConfirmation = true } label: {
Text(ElementL10n.actionSignOut)
}
.frame(maxWidth: .infinity)
.padding(.vertical, 16)
.accessibilityIdentifier("crashButton")
.foregroundColor(Color.element.primaryContent)
.accessibilityIdentifier("logoutButton")
.confirmationDialog(ElementL10n.actionSignOutConfirmationSimple,
isPresented: $showingLogoutConfirmation,
titleVisibility: .visible) {
Button(ElementL10n.actionSignOut,
role: .destructive) { context.send(viewAction: .logout)
}
}
} footer: {
versionText
}
}
.navigationTitle(ElementL10n.settings)
}
var versionText: some View {
Text(ElementL10n.settingsVersion + ": " + ElementInfoPlist.cfBundleShortVersionString + " (" + ElementInfoPlist.cfBundleVersion + ")")
}
}
// MARK: - Previews