From aae3618c5eed562067ac23bf4aee0eb42e2b1688 Mon Sep 17 00:00:00 2001 From: Rituraj Sambherao <54317407+ritsam@users.noreply.github.com> Date: Mon, 14 Sep 2020 17:17:44 +0100 Subject: [PATCH] Submission: Warning if user cancels submission (EXPOSUREAPP-2509) (#1142) * user warning if keys submission flow is inturrpted / cancelled * default string values added for pipeline fix * Warning Dialog strings updated * applied the changes suggested in review Co-authored-by: Matthias Urhahn <darken@darken.eu> Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- ...ssionResultPositiveOtherWarningFragment.kt | 30 ++++++++++++++++++- .../src/main/res/values-de/strings.xml | 9 ++++++ .../src/main/res/values/strings.xml | 9 ++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt index 471d9f48c..07e8fb165 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.accessibility.AccessibilityEvent +import androidx.activity.OnBackPressedCallback import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer @@ -39,6 +40,14 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), private lateinit var internalExposureNotificationPermissionHelper: InternalExposureNotificationPermissionHelper + // Overrides default back behaviour + private val backCallback: OnBackPressedCallback = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + handleSubmissionCancellation() + } + } + override fun onResume() { super.onResume() binding.submissionPositiveOtherPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT) @@ -53,6 +62,7 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), internalExposureNotificationPermissionHelper = InternalExposureNotificationPermissionHelper(this, this) _binding = FragmentSubmissionPositiveOtherWarningBinding.inflate(inflater) + requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, backCallback) binding.submissionViewModel = submissionViewModel binding.lifecycleOwner = this return binding.root @@ -139,10 +149,28 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), initiateWarningOthers() } binding.submissionPositiveOtherWarningHeader.headerButtonBack.buttonIcon.setOnClickListener { - navigateToSubmissionResultFragment() + handleSubmissionCancellation() } } + /** + * Opens a Dialog that warns user + * when they're about to cancel the submission flow + * @see DialogHelper + * @see navigateToSubmissionResultFragment + */ + fun handleSubmissionCancellation() { + DialogHelper.showDialog(DialogHelper.DialogInstance( + requireActivity(), + R.string.submission_error_dialog_confirm_cancellation_title, + R.string.submission_error_dialog_confirm_cancellation_body, + R.string.submission_error_dialog_confirm_cancellation_button_positive, + R.string.submission_error_dialog_confirm_cancellation_button_negative, + true, + ::navigateToSubmissionResultFragment + )) + } + private fun navigateToSubmissionResultFragment() = findNavController().doNavigate( SubmissionResultPositiveOtherWarningFragmentDirections diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index bd30d1371..dcd6de079 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -770,6 +770,15 @@ <!-- XBUT: Positive button for submission tan redeemed --> <string name="submission_error_dialog_web_tan_redeemed_button_positive">"OK"</string> + <!-- XHED: Dialog title for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_title">"Wollen Sie wirklich abbrechen?"</string> + <!-- XMSG: Dialog body for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_body">"Ihre bisherigen Angaben werden nicht gespeichert."</string> + <!-- XBUT: Positive button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_positive">"Ja"</string> + <!-- XBUT: Negative button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_negative">"Nein"</string> + <!-- Permission Rationale Dialog --> <!-- XHED: Dialog headline QR Scan permission rationale --> <string name="submission_qr_code_scan_permission_rationale_dialog_headline">"Kamera-Zugriff benötigt"</string> diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index dd547438d..859d05a8b 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -772,6 +772,15 @@ <!-- XBUT: Positive button for submission tan redeemed --> <string name="submission_error_dialog_web_tan_redeemed_button_positive">"OK"</string> + <!-- XHED: Dialog title for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_title">"Wollen Sie wirklich abbrechen?"</string> + <!-- XMSG: Dialog body for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_body">"Ihre bisherigen Angaben werden nicht gespeichert."</string> + <!-- XBUT: Positive button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_positive">"Ja"</string> + <!-- XBUT: Negative button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_negative">"Nein"</string> + <!-- Permission Rationale Dialog --> <!-- XHED: Dialog headline QR Scan permission rationale --> <string name="submission_qr_code_scan_permission_rationale_dialog_headline">"Camera authorization required"</string> -- GitLab