Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Show FAQ button in qr scanner error dialog (EXPOSUREAPP-144333) #5771

Merged
merged 2 commits into from
Dec 21, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -6,7 +6,7 @@ import de.rki.coronawarnapp.covidcertificate.common.exception.InvalidHealthCerti
import de.rki.coronawarnapp.ui.dialog.displayDialog
import de.rki.coronawarnapp.util.ExternalActionHelper.openUrl

fun Fragment.showCovidCertificateOnboardingErrorDialog(error: Throwable) = displayDialog {
fun Fragment.showCertificateQrErrorDialog(error: Throwable, dismissAction: () -> Unit = { }) = displayDialog {
if (error is InvalidHealthCertificateException) {
when {
error.isCertificateInvalid ->
Expand All @@ -20,12 +20,14 @@ fun Fragment.showCovidCertificateOnboardingErrorDialog(error: Throwable) = displ
openUrl(R.string.dcc_signature_validation_dialog_faq_link)
}
}

error.isAlreadyRegistered -> {
neutralButton(R.string.error_button_dcc_faq) {
openUrl(R.string.error_dcc_already_registered_faq_link)
}
}
}
}
dismissAction { dismissAction() }
setError(error)
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class CovidCertificateOnboardingFragment : Fragment(R.layout.covid_certificate_o
}

is CovidCertificateOnboardingViewModel.Event.Error ->
showCovidCertificateOnboardingErrorDialog(event.throwable)
showCertificateQrErrorDialog(event.throwable)

is CovidCertificateOnboardingViewModel.Event.SkipOnboarding ->
if (args.showBottomNav) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.coronatest.type.BaseCoronaTest
import de.rki.coronawarnapp.covidcertificate.common.repository.CertificateContainerId
import de.rki.coronawarnapp.covidcertificate.ui.onboarding.CovidCertificateOnboardingFragment
import de.rki.coronawarnapp.covidcertificate.ui.onboarding.showCertificateQrErrorDialog
import de.rki.coronawarnapp.databinding.FragmentQrcodeScannerBinding
import de.rki.coronawarnapp.dccticketing.ui.consent.one.DccTicketingConsentOneFragment
import de.rki.coronawarnapp.tag
Expand Down Expand Up @@ -102,17 +103,22 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
is DccTicketingError -> when {
scannerResult.isDccTicketingMinVersionError ->
showValidationServiceMinVersionDialog(errorMsg = scannerResult.errorMsg)

else -> showDccTicketingErrorDialog(errorMsg = scannerResult.errorMsg)
}

is Error -> when {
scannerResult.isDccTicketingError || scannerResult.isAllowListError -> showDccTicketingErrorDialog(
humanReadableError = scannerResult.error.tryHumanReadableError(requireContext())
)
else -> showScannerResultErrorDialog(scannerResult.error)

else -> showCertificateQrErrorDialog(scannerResult.error) { startDecode() }
}

InfoScreen -> findNavController().navigate(
QrCodeScannerFragmentDirections.actionUniversalScannerToUniversalScannerInformationFragment()
)

InProgress -> Unit
}
}
Expand Down Expand Up @@ -199,11 +205,6 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
}
}

private fun showScannerResultErrorDialog(error: Throwable) = displayDialog {
dismissAction { startDecode() }
setError(error)
}

private fun showValidationServiceMinVersionDialog(errorMsg: LazyString) = displayDialog {
title(R.string.errors_generic_headline_short)
message(errorMsg.get(requireContext()))
Expand Down Expand Up @@ -233,32 +234,38 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
showRestoreCoronaTestConfirmation(scannerResult.recycledCoronaTest)
null
}

is CoronaTestResult.RestoreDuplicateTest ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionDeletionWarningFragment(
scannerResult.restoreRecycledTestRequest,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)

is CoronaTestResult.TestPending ->
QrCodeScannerFragmentDirections.actionUniversalScannerToPendingTestResult(
testIdentifier = scannerResult.test.identifier,
forceTestResultUpdate = true,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)

is CoronaTestResult.TestInvalid ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultInvalidFragment(
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)

is CoronaTestResult.TestNegative ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultNegativeFragment(
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)

is CoronaTestResult.TestPositive ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultKeysSharedFragment(
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)

is CoronaTestResult.WarnOthers ->
QrCodeScannerFragmentDirections
.actionUniversalScannerToSubmissionResultPositiveOtherWarningNoConsentFragment(
Expand All @@ -285,10 +292,12 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
navOptions
)
}

is DccResult.InRecycleBin -> showRestoreDgcConfirmation(scannerResult.recycledContainerId)
is DccResult.MaxPersonsBlock -> {
showMaxPersonExceedsMaxResult(scannerResult.max)
}

is DccResult.MaxPersonsWarning -> {
showMaxPersonExceedsThresholdResult(scannerResult.max, scannerResult.uri, navOptions)
}
Expand All @@ -311,6 +320,7 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
.build()
)
}

is CheckInResult.Error -> showCheckInQrCodeError(scannerResult.lazyMessage)
}
}
Expand Down