mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 09:02:44 +02:00
Use UserIndicatorPresenter for onboarding personalisation.
Remove the service from the display name screen to match the avatar screen. Add a loading indicator to PhotoPickerPresenter. Fix layout issue when selecting non-square avatar image.
This commit is contained in:
@@ -27,16 +27,7 @@ struct OnboardingDisplayNameScreen: View {
|
||||
|
||||
@State private var isEditingTextField = false
|
||||
|
||||
#warning("Move these computed properties to the view model")
|
||||
var textFieldFooterString: String {
|
||||
if let errorMessage = viewModel.viewState.validationErrorMessage {
|
||||
return errorMessage
|
||||
}
|
||||
|
||||
return VectorL10n.onboardingDisplayNameHint
|
||||
}
|
||||
|
||||
var textFieldFooterColor: Color {
|
||||
private var textFieldFooterColor: Color {
|
||||
viewModel.viewState.validationErrorMessage == nil ? theme.colors.tertiaryContent : theme.colors.alert
|
||||
}
|
||||
|
||||
@@ -44,6 +35,8 @@ struct OnboardingDisplayNameScreen: View {
|
||||
|
||||
@ObservedObject var viewModel: OnboardingDisplayNameViewModel.Context
|
||||
|
||||
// MARK: - Views
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
VStack(spacing: 0) {
|
||||
@@ -62,7 +55,6 @@ struct OnboardingDisplayNameScreen: View {
|
||||
}
|
||||
.accentColor(theme.colors.accent)
|
||||
.background(theme.colors.background.ignoresSafeArea())
|
||||
.waitOverlay(show: viewModel.viewState.isWaiting, allowUserInteraction: false)
|
||||
.alert(item: $viewModel.alertInfo) { $0.alert }
|
||||
.onChange(of: viewModel.displayName) { _ in
|
||||
viewModel.send(viewAction: .validateDisplayName)
|
||||
@@ -98,7 +90,7 @@ struct OnboardingDisplayNameScreen: View {
|
||||
isEditing: isEditingTextField,
|
||||
isError: viewModel.viewState.validationErrorMessage != nil))
|
||||
|
||||
Text(textFieldFooterString)
|
||||
Text(viewModel.viewState.textFieldFooterMessage)
|
||||
.font(theme.fonts.footnote)
|
||||
.foregroundColor(textFieldFooterColor)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
@@ -112,7 +104,7 @@ struct OnboardingDisplayNameScreen: View {
|
||||
viewModel.send(viewAction: .save)
|
||||
}
|
||||
.buttonStyle(PrimaryActionButtonStyle())
|
||||
.disabled(viewModel.displayName.isEmpty || viewModel.viewState.isWaiting)
|
||||
.disabled(viewModel.displayName.isEmpty)
|
||||
|
||||
Button { viewModel.send(viewAction: .skip) } label: {
|
||||
Text(VectorL10n.onboardingPersonalizationSkip)
|
||||
|
||||
Reference in New Issue
Block a user