Skip to content
Snippets Groups Projects
Unverified Commit df6462b3 authored by Alex Paulescu's avatar Alex Paulescu Committed by GitHub
Browse files

Invalid QR dialog wrong button functions (EXPOSUREAPP-7341) (#3253)


* OSD back button does same thing as cancel button.

* Make solution isolated

* Fix linting

* Simplified condition.

* Cancel function now works consistently with all invalid QR codes.

* Renamed function.

Co-authored-by: default avatarharambasicluka <64483219+harambasicluka@users.noreply.github.com>
Co-authored-by: default avatarAlexander Alferov <a.alferov@sap.com>
Co-authored-by: default avatarJuraj Kusnier <jurajkusnier@users.noreply.github.com>
Co-authored-by: default avatarMohamed Metwalli <mohamed.metwalli@sap.com>
parent 85c1272a
No related branches found
No related tags found
No related merge requests found
...@@ -82,9 +82,13 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -82,9 +82,13 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
viewModel.qrCodeValidationState.observe2(this) { viewModel.qrCodeValidationState.observe2(this) {
if (QrCodeRegistrationStateProcessor.ValidationState.INVALID == it) { if (QrCodeRegistrationStateProcessor.ValidationState.INVALID == it) {
showInvalidScanDialog() DialogHelper.showDialog(createInvalidScanDialog())
} }
} }
viewModel.registrationError.observe2(this) {
DialogHelper.showDialog(buildErrorDialog(it))
}
viewModel.showRedeemedTokenWarning.observe2(this) { viewModel.showRedeemedTokenWarning.observe2(this) {
val dialog = DialogHelper.DialogInstance( val dialog = DialogHelper.DialogInstance(
requireActivity(), requireActivity(),
...@@ -128,10 +132,6 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -128,10 +132,6 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
} }
}.run { doNavigate(this) } }.run { doNavigate(this) }
} }
viewModel.registrationError.observe2(this) {
DialogHelper.showDialog(buildErrorDialog(it))
}
} }
private fun startDecode() { private fun startDecode() {
...@@ -142,16 +142,7 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -142,16 +142,7 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
private fun buildErrorDialog(exception: CwaWebException): DialogHelper.DialogInstance { private fun buildErrorDialog(exception: CwaWebException): DialogHelper.DialogInstance {
return when (exception) { return when (exception) {
is BadRequestException -> DialogHelper.DialogInstance( is BadRequestException -> createInvalidScanDialog()
requireActivity(),
R.string.submission_qr_code_scan_invalid_dialog_headline,
R.string.submission_qr_code_scan_invalid_dialog_body,
R.string.submission_qr_code_scan_invalid_dialog_button_positive,
R.string.submission_qr_code_scan_invalid_dialog_button_negative,
true,
{ startDecode() },
::navigateToDispatchScreen
)
is CwaClientError, is CwaServerError -> DialogHelper.DialogInstance( is CwaClientError, is CwaServerError -> DialogHelper.DialogInstance(
requireActivity(), requireActivity(),
R.string.submission_error_dialog_web_generic_error_title, R.string.submission_error_dialog_web_generic_error_title,
...@@ -177,20 +168,17 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -177,20 +168,17 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
SubmissionQRCodeScanFragmentDirections.actionSubmissionQRCodeScanFragmentToSubmissionDispatcherFragment() SubmissionQRCodeScanFragmentDirections.actionSubmissionQRCodeScanFragmentToSubmissionDispatcherFragment()
) )
private fun showInvalidScanDialog() { private fun createInvalidScanDialog() = DialogHelper.DialogInstance(
val invalidScanDialogInstance = DialogHelper.DialogInstance( requireActivity(),
requireActivity(), R.string.submission_qr_code_scan_invalid_dialog_headline,
R.string.submission_qr_code_scan_invalid_dialog_headline, R.string.submission_qr_code_scan_invalid_dialog_body,
R.string.submission_qr_code_scan_invalid_dialog_body, R.string.submission_qr_code_scan_invalid_dialog_button_positive,
R.string.submission_qr_code_scan_invalid_dialog_button_positive, R.string.submission_qr_code_scan_invalid_dialog_button_negative,
R.string.submission_qr_code_scan_invalid_dialog_button_negative, true,
true, { startDecode() },
::startDecode, { viewModel.onBackPressed() },
::navigateToDispatchScreen { viewModel.onBackPressed() }
) )
DialogHelper.showDialog(invalidScanDialogInstance)
}
override fun onRequestPermissionsResult( override fun onRequestPermissionsResult(
requestCode: Int, requestCode: Int,
......
...@@ -23,7 +23,8 @@ object DialogHelper { ...@@ -23,7 +23,8 @@ object DialogHelper {
val cancelable: Boolean? = true, val cancelable: Boolean? = true,
val isTextSelectable: Boolean = false, val isTextSelectable: Boolean = false,
val positiveButtonFunction: () -> Unit? = {}, val positiveButtonFunction: () -> Unit? = {},
val negativeButtonFunction: () -> Unit? = {} val negativeButtonFunction: () -> Unit? = {},
val cancelFunction: () -> Unit? = {}
) { ) {
constructor( constructor(
context: Context, context: Context,
...@@ -33,7 +34,8 @@ object DialogHelper { ...@@ -33,7 +34,8 @@ object DialogHelper {
negativeButton: Int? = null, negativeButton: Int? = null,
cancelable: Boolean? = true, cancelable: Boolean? = true,
positiveButtonFunction: () -> Unit? = {}, positiveButtonFunction: () -> Unit? = {},
negativeButtonFunction: () -> Unit? = {} negativeButtonFunction: () -> Unit? = {},
cancelFunction: () -> Unit? = {}
) : this( ) : this(
context = context, context = context,
title = context.resources.getString(title), title = context.resources.getString(title),
...@@ -42,7 +44,8 @@ object DialogHelper { ...@@ -42,7 +44,8 @@ object DialogHelper {
negativeButton = negativeButton?.let { context.resources.getString(it) }, negativeButton = negativeButton?.let { context.resources.getString(it) },
cancelable = cancelable, cancelable = cancelable,
positiveButtonFunction = positiveButtonFunction, positiveButtonFunction = positiveButtonFunction,
negativeButtonFunction = negativeButtonFunction negativeButtonFunction = negativeButtonFunction,
cancelFunction = cancelFunction
) )
constructor( constructor(
...@@ -53,7 +56,8 @@ object DialogHelper { ...@@ -53,7 +56,8 @@ object DialogHelper {
negativeButton: Int? = null, negativeButton: Int? = null,
cancelable: Boolean? = true, cancelable: Boolean? = true,
positiveButtonFunction: () -> Unit? = {}, positiveButtonFunction: () -> Unit? = {},
negativeButtonFunction: () -> Unit? = {} negativeButtonFunction: () -> Unit? = {},
cancelFunction: () -> Unit? = {}
) : this( ) : this(
context = context, context = context,
title = context.resources.getString(title), title = context.resources.getString(title),
...@@ -62,7 +66,8 @@ object DialogHelper { ...@@ -62,7 +66,8 @@ object DialogHelper {
negativeButton = negativeButton?.let { context.resources.getString(it) }, negativeButton = negativeButton?.let { context.resources.getString(it) },
cancelable = cancelable, cancelable = cancelable,
positiveButtonFunction = positiveButtonFunction, positiveButtonFunction = positiveButtonFunction,
negativeButtonFunction = negativeButtonFunction negativeButtonFunction = negativeButtonFunction,
cancelFunction = cancelFunction
) )
} }
...@@ -93,6 +98,7 @@ object DialogHelper { ...@@ -93,6 +98,7 @@ object DialogHelper {
dialogInstance.negativeButtonFunction() dialogInstance.negativeButtonFunction()
} }
} }
setOnCancelListener { dialogInstance.cancelFunction() }
} }
builder.create() builder.create()
} }
......
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