diff --git a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedFragment.kt b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedFragment.kt index 2adf0e9..899dc0f 100644 --- a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedFragment.kt +++ b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedFragment.kt @@ -19,7 +19,6 @@ import app.nexd.android.ui.auth.register.RegisterDetailedViewModel.Progress.* import app.nexd.android.ui.common.Constants import app.nexd.android.ui.common.DefaultSnackbar import com.google.android.material.snackbar.Snackbar -import kotlinx.android.synthetic.main.fragment_register_detailed.* import org.koin.androidx.viewmodel.ext.android.sharedViewModel import org.koin.androidx.viewmodel.ext.android.viewModel @@ -57,7 +56,6 @@ class RegisterDetailedFragment : Fragment() { } binding.buttonRegister.setOnClickListener { - switchUiIsEnabled(false) vm.setUserDetails() } @@ -72,13 +70,12 @@ class RegisterDetailedFragment : Fragment() { DefaultSnackbar(view, it, Snackbar.LENGTH_SHORT) } binding.progressBar.visibility = View.GONE - switchUiIsEnabled(true) + } is Finished -> { activityVm.setUserAsComplete() findNavController().navigateUp() binding.progressBar.visibility = View.GONE - switchUiIsEnabled(true) } } }) @@ -97,15 +94,4 @@ class RegisterDetailedFragment : Fragment() { ) } - // TODO: migrate that to ViewModel and bind visibility - private fun switchUiIsEnabled(enable: Boolean) { - binding.apply { - editTextPhoneNumber.isEnabled = enable - editTextStreet.isEnabled = enable - editTextHouseNr.isEnabled = enable - editTextZipCode.isEnabled = enable - editTextCity.isEnabled = enable - buttonRegister.isEnabled = enable - } - } } \ No newline at end of file diff --git a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedViewModel.kt b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedViewModel.kt index ce88b45..6c7c822 100644 --- a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedViewModel.kt +++ b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterDetailedViewModel.kt @@ -25,28 +25,33 @@ class RegisterDetailedViewModel( } val phoneNumber = MutableLiveData("") - val phoneNumberError = MutableLiveData(0) + val phoneNumberIsEnabled = MutableLiveData(true) val street = MutableLiveData("") - val streetError = MutableLiveData(0) + val streetIsEnabled = MutableLiveData(true) val houseNumber = MutableLiveData("") - val houseNumberError = MutableLiveData(0) + val houseNumberIsEnabled = MutableLiveData(true) val zipCode = MutableLiveData("") - val zipCodeError = MutableLiveData(0) + val zipCodeIsEnabled = MutableLiveData(true) val locality = MutableLiveData("") - val localityError = MutableLiveData(0) + val localityIsEnabled = MutableLiveData(true) + + val buttonRegisterIsEnabled = MutableLiveData(true) + val buttonDataProtectionIsEnabled = MutableLiveData(true) val progress = MutableLiveData(Progress.Idle) fun setUserDetails() { + switchUiIsEnabled(false) + var success = true if (phoneNumber.value.isNullOrEmpty()) { @@ -93,13 +98,16 @@ class RegisterDetailedViewModel( ) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ + switchUiIsEnabled(true) progress.value = Progress.Finished }, { error -> + switchUiIsEnabled(true) if (error is BackendError) { error.errorCodes.forEach { when (it) { VALIDATION_PHONENUMBER_INVALID -> { - phoneNumberError.value = R.string.error_message_input_validation_phone_number_invalid + phoneNumberError.value = + R.string.error_message_input_validation_phone_number_invalid } else -> { Log.e( @@ -121,8 +129,19 @@ class RegisterDetailedViewModel( }) } } else { + switchUiIsEnabled(true) progress.value = Progress.Error() } } + private fun switchUiIsEnabled(enable: Boolean) { + phoneNumberIsEnabled.value = enable + streetIsEnabled.value = enable + houseNumberIsEnabled.value = enable + zipCodeIsEnabled.value = enable + localityIsEnabled.value = enable + buttonRegisterIsEnabled.value = enable + buttonDataProtectionIsEnabled.value = enable + } + } \ No newline at end of file diff --git a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterFragment.kt b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterFragment.kt index 6103ce4..8c3a30f 100644 --- a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterFragment.kt +++ b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterFragment.kt @@ -18,7 +18,6 @@ import app.nexd.android.ui.auth.register.RegisterViewModel.Progress.* import app.nexd.android.ui.common.Constants import app.nexd.android.ui.common.DefaultSnackbar import com.google.android.material.snackbar.Snackbar -import kotlinx.android.synthetic.main.fragment_register.* import org.koin.androidx.viewmodel.ext.android.sharedViewModel import org.koin.androidx.viewmodel.ext.android.viewModel @@ -58,7 +57,6 @@ class RegisterFragment : Fragment() { ) binding.buttonRegister.setOnClickListener { - switchUiIsEnabled(false) vm.register() } @@ -76,12 +74,10 @@ class RegisterFragment : Fragment() { progress.message?.let { message -> DefaultSnackbar(view, message, Snackbar.LENGTH_SHORT) } - switchUiIsEnabled(true) } is Finished -> { activityVm.authenticate(progress.token) findNavController().navigate(RegisterFragmentDirections.toRegisterDetailedFragment()) - switchUiIsEnabled(true) } } }) @@ -100,17 +96,6 @@ class RegisterFragment : Fragment() { ) } - private fun switchUiIsEnabled(enable: Boolean) { - binding.apply { - buttonRegister.isEnabled = enable - editTextFirstName.isEnabled = enable - editTextLastName.isEnabled = enable - editTextEmail.isEnabled = enable - editTextPassword.isEnabled = enable - editTextPasswordConfirm.isEnabled = enable - checkboxDataProtection.isEnabled = enable - } - } } diff --git a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterViewModel.kt b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterViewModel.kt index b484c9f..4a2756c 100644 --- a/app/src/main/java/app/nexd/android/ui/auth/register/RegisterViewModel.kt +++ b/app/src/main/java/app/nexd/android/ui/auth/register/RegisterViewModel.kt @@ -26,28 +26,31 @@ class RegisterViewModel( } val firstName = MutableLiveData("") - val firstNameError = MutableLiveData(0) + val firstNameIsEnabled = MutableLiveData(true) val lastName = MutableLiveData("") - val lastNameError = MutableLiveData(0) + val lastNameIsEnabled = MutableLiveData(true) val email = MutableLiveData("") - val emailError = MutableLiveData(0) + val emailIsEnabled = MutableLiveData(true) val password = MutableLiveData("") - val passwordError = MutableLiveData(0) + val passwordIsEnabled = MutableLiveData(true) val passwordConfirmation = MutableLiveData("") - val passwordConfirmationError = MutableLiveData(0) + val passwordConfirmationIsEnabled = MutableLiveData(true) val dataProtection = MutableLiveData(false) - val dataProtectionError = MutableLiveData(0) + val dataProtectionIsEnabled = MutableLiveData(true) + + val buttonRegisterIsEnabled = MutableLiveData(true) + val buttonDataProtectionIsEnabled = MutableLiveData(true) val progress = MutableLiveData(Progress.Idle) @@ -60,6 +63,7 @@ class RegisterViewModel( } fun register() { + switchUiIsEnabled(false) var success = true if (firstName.value.isNullOrEmpty()) { @@ -111,14 +115,17 @@ class RegisterViewModel( .observeOn(AndroidSchedulers.mainThread()) .subscribe( { + switchUiIsEnabled(true) progress.value = Progress.Finished(token = it.accessToken) }, { + switchUiIsEnabled(true) handleErrors(it) } ) } } else { + switchUiIsEnabled(true) progress.value = Progress.Error() } } @@ -159,4 +166,15 @@ class RegisterViewModel( } } + private fun switchUiIsEnabled(enable: Boolean) { + firstNameIsEnabled.value = enable + lastNameIsEnabled.value = enable + emailIsEnabled.value = enable + passwordIsEnabled.value = enable + passwordConfirmationIsEnabled.value = enable + dataProtectionIsEnabled.value = enable + buttonRegisterIsEnabled.value = enable + buttonDataProtectionIsEnabled.value = enable + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_register.xml b/app/src/main/res/layout/fragment_register.xml index d591d21..6418975 100644 --- a/app/src/main/res/layout/fragment_register.xml +++ b/app/src/main/res/layout/fragment_register.xml @@ -22,8 +22,8 @@ android:clickable="true" android:focusable="true" android:theme="@style/ToolbarThemeWhite" - app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" app:navigationIcon="?attr/homeAsUpIndicator" /> + android:visibility="gone" /> + android:orientation="vertical" + android:paddingHorizontal="20dp"> + android:layout_height="0dp" + android:layout_weight="1" /> + android:text="@={viewModel.firstName}" /> + android:text="@={viewModel.lastName}" /> + android:text="@={viewModel.email}" /> + android:text="@={viewModel.password}" /> + android:text="@={viewModel.passwordConfirmation}" /> - + - +