From 3c487112f8a91dcbe5140277cda89724d1908146 Mon Sep 17 00:00:00 2001
From: Matthias Urhahn <matthias.urhahn@sap.com>
Date: Wed, 16 Jun 2021 10:45:30 +0200
Subject: [PATCH] Fix clicked corona-test links, with DCC support, not
 navigating to DCC consent screen, so it behaves the same as it when it is
 scanned via camera. (#3457)

Co-authored-by: Mohamed Metwalli <mohamed.metwalli@sap.com>
---
 .../consent/SubmissionConsentFragment.kt      | 19 +++++++-----
 .../consent/SubmissionConsentViewModel.kt     | 31 ++++++++++++-------
 2 files changed, 31 insertions(+), 19 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
index 3423316e4..6c5384b49 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt
@@ -55,15 +55,18 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
                         requireActivity(),
                         REQUEST_USER_RESOLUTION
                     )
-                is SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode -> {
-                    doNavigate(
-                        NavGraphDirections
-                            .actionToSubmissionDeletionWarningFragment(
-                                testRegistrationRequest = it.coronaTestQRCode,
-                                isConsentGiven = it.consentGiven,
-                            )
+                is SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode -> doNavigate(
+                    NavGraphDirections.actionToSubmissionDeletionWarningFragment(
+                        testRegistrationRequest = it.coronaTestQRCode,
+                        isConsentGiven = it.consentGiven,
                     )
-                }
+                )
+                is SubmissionNavigationEvents.NavigateToRequestDccFragment -> doNavigate(
+                    NavGraphDirections.actionRequestCovidCertificateFragment(
+                        testRegistrationRequest = it.coronaTestQRCode,
+                        coronaTestConsent = it.consentGiven
+                    )
+                )
             }
         }
         viewModel.countries.observe2(this) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
index 4bd68d504..643028c08 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
@@ -83,17 +83,26 @@ class SubmissionConsentViewModel @AssistedInject constructor(
 
         val coronaTest = submissionRepository.testForType(coronaTestQRCode.type).first()
 
-        if (coronaTest != null) {
-            SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode(
-                coronaTestQRCode,
-                consentGiven = true
-            ).run { routeToScreen.postValue(this) }
-        } else {
-            registrationStateProcessor.startRegistration(
-                request = coronaTestQRCode,
-                isSubmissionConsentGiven = true,
-                allowReplacement = false
-            )
+        when {
+            coronaTest != null -> {
+                SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode(
+                    coronaTestQRCode,
+                    consentGiven = true
+                ).run { routeToScreen.postValue(this) }
+            }
+            coronaTestQRCode.isDccSupportedByPoc && !coronaTestQRCode.isDccConsentGiven -> {
+                SubmissionNavigationEvents.NavigateToRequestDccFragment(
+                    coronaTestQRCode = coronaTestQRCode,
+                    consentGiven = true,
+                ).run { routeToScreen.postValue(this) }
+            }
+            else -> {
+                registrationStateProcessor.startRegistration(
+                    request = coronaTestQRCode,
+                    isSubmissionConsentGiven = true,
+                    allowReplacement = false
+                )
+            }
         }
     }
 
-- 
GitLab