Skip to content
Snippets Groups Projects
Unverified Commit e7c26e27 authored by Kolya Opahle's avatar Kolya Opahle Committed by GitHub
Browse files

Loading indicators for registration requests (#318)


* Added loading spinners to QR Code and TAN fragments

* Added handling for error state produced by TransactionExceptions

* Added spinner to other warning fragment

Co-authored-by: default avatarHee Tatt Ooi <hee.tatt.ooi@sap.com>
Co-authored-by: default avatarharambasicluka <64483219+harambasicluka@users.noreply.github.com>
parent 40e72d50
No related branches found
No related tags found
No related merge requests found
......@@ -136,6 +136,11 @@ class SubmissionQRCodeScanFragment : Fragment() {
})
viewModel.registrationState.observeEvent(viewLifecycleOwner, {
binding.submissionQrCodeScanSpinner.visibility = when (it) {
ApiRequestState.STARTED -> View.VISIBLE
else -> View.GONE
}
if (ApiRequestState.SUCCESS == it) {
findNavController().doNavigate(
SubmissionQRCodeScanFragmentDirections
......
......@@ -52,6 +52,8 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(),
}
override fun onFailure(exception: Exception?) {
binding.submissionPositiveOtherWarningButtonNext.isEnabled = true
binding.submissionPositiveOtherWarningSpinner.visibility = View.GONE
submissionFailed = true
}
......@@ -137,6 +139,16 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(),
})
submissionViewModel.submissionState.observeEvent(viewLifecycleOwner, {
binding.submissionPositiveOtherWarningButtonNext.isEnabled = when (it) {
ApiRequestState.STARTED -> false
else -> true
}
binding.submissionPositiveOtherWarningSpinner.visibility = when (it) {
ApiRequestState.STARTED -> View.VISIBLE
else -> View.GONE
}
if (it == ApiRequestState.SUCCESS) {
findNavController().doNavigate(
SubmissionResultPositiveOtherWarningFragmentDirections
......@@ -148,6 +160,8 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(),
private fun setButtonOnClickListener() {
binding.submissionPositiveOtherWarningButtonNext.setOnClickListener {
binding.submissionPositiveOtherWarningButtonNext.isEnabled = false
binding.submissionPositiveOtherWarningSpinner.visibility = View.VISIBLE
initiateWarningOthers()
}
binding.submissionPositiveOtherWarningHeader.headerButtonBack.buttonIcon.setOnClickListener {
......
......@@ -101,6 +101,11 @@ class SubmissionTanFragment : Fragment() {
binding.submissionTanHeader.headerButtonBack.buttonIcon.setOnClickListener { navigateToDispatchScreen() }
submissionViewModel.registrationState.observeEvent(viewLifecycleOwner, {
binding.submissionTanSpinner.visibility = when (it) {
ApiRequestState.STARTED -> View.VISIBLE
else -> View.GONE
}
if (ApiRequestState.SUCCESS == it) {
findNavController().doNavigate(
SubmissionTanFragmentDirections.actionSubmissionTanFragmentToSubmissionResultFragment()
......
......@@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import de.rki.coronawarnapp.exception.ExceptionCategory
import de.rki.coronawarnapp.exception.TransactionException
import de.rki.coronawarnapp.exception.http.CwaWebException
import de.rki.coronawarnapp.exception.reporting.report
import de.rki.coronawarnapp.service.submission.SubmissionService
......@@ -121,7 +122,15 @@ class SubmissionViewModel : ViewModel() {
} catch (err: CwaWebException) {
exceptionLiveData?.value = Event(err)
state.value = Event(ApiRequestState.FAILED)
} catch (err: TransactionException) {
if (err.cause is CwaWebException) {
exceptionLiveData?.value = Event(err.cause)
} else {
err.report(ExceptionCategory.INTERNAL)
}
state.value = Event(ApiRequestState.FAILED)
} catch (err: Exception) {
state.value = Event(ApiRequestState.FAILED)
err.report(ExceptionCategory.INTERNAL)
}
}
......
......@@ -41,6 +41,19 @@
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toBottomOf="@id/guideline_action" />
<ProgressBar
android:id="@+id/submission_positive_other_warning_spinner"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="@dimen/match_constraint"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_large"
android:indeterminate="true"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintEnd_toEndOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintStart_toStartOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintTop_toTopOf="@+id/submission_positive_other_warning_button_next" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_action"
android:layout_width="wrap_content"
......
......@@ -40,6 +40,17 @@
app:layout_constraintStart_toStartOf="@+id/submission_qr_code_scan_preview"
app:layout_constraintTop_toBottomOf="@+id/submission_qr_code_scan_guideline_center" />
<ProgressBar
android:id="@+id/submission_qr_code_scan_spinner"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@+id/submission_qr_code_scan_body"
app:layout_constraintStart_toStartOf="@+id/submission_qr_code_scan_body"
app:layout_constraintTop_toBottomOf="@+id/submission_qr_code_scan_body" />
<include
android:id="@+id/submission_qr_code_scan_close"
layout="@layout/include_button_icon"
......
......@@ -41,6 +41,17 @@
app:layout_constraintTop_toBottomOf="@+id/submission_tan_header"
app:viewmodel="@{viewmodel}" />
<ProgressBar
android:id="@+id/submission_tan_spinner"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/spacing_normal"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/guideline_action"
app:layout_constraintEnd_toEndOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start" />
<Button
android:id="@+id/submission_tan_button_enter"
style="@style/buttonPrimary"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment