Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -57,7 +56,6 @@ class RegisterDetailedFragment : Fragment() {
}

binding.buttonRegister.setOnClickListener {
switchUiIsEnabled(false)
vm.setUserDetails()
}

Expand All @@ -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)
}
}
})
Expand All @@ -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
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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>(Progress.Idle)

fun setUserDetails() {
switchUiIsEnabled(false)

var success = true

if (phoneNumber.value.isNullOrEmpty()) {
Expand Down Expand Up @@ -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(
Expand All @@ -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
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -58,7 +57,6 @@ class RegisterFragment : Fragment() {
)

binding.buttonRegister.setOnClickListener {
switchUiIsEnabled(false)
vm.register()
}

Expand All @@ -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)
}
}
})
Expand All @@ -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
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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>(Progress.Idle)

Expand All @@ -60,6 +63,7 @@ class RegisterViewModel(
}

fun register() {
switchUiIsEnabled(false)
var success = true

if (firstName.value.isNullOrEmpty()) {
Expand Down Expand Up @@ -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()
}
}
Expand Down Expand Up @@ -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
}

}
Loading