From 17ee826e0e9454a27e693abe5deb945464945ea6 Mon Sep 17 00:00:00 2001
From: Kolya Opahle <k.opahle@sap.com>
Date: Tue, 1 Jun 2021 15:52:26 +0200
Subject: [PATCH] Added deletion warning dialog to RATResultNegativeFragment
 (#3336)

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
Co-authored-by: I502720 <axel.herbstreith@sap.com>
Co-authored-by: AlexanderAlferov <64849422+AlexanderAlferov@users.noreply.github.com>
---
 .../negative/RATResultNegativeFragment.kt     | 22 ++++++++++++++++---
 .../negative/RATResultNegativeNavigation.kt   |  1 +
 .../negative/RATResultNegativeViewModel.kt    |  6 ++++-
 3 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeFragment.kt
index b04ebebf8..0115a1991 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeFragment.kt
@@ -7,6 +7,7 @@ import androidx.core.text.buildSpannedString
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionAntigenTestResultNegativeBinding
+import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.toUserTimeZone
 import de.rki.coronawarnapp.util.di.AutoInject
 import de.rki.coronawarnapp.util.ui.popBackStack
@@ -26,7 +27,7 @@ class RATResultNegativeFragment : Fragment(R.layout.fragment_submission_antigen_
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) =
         with(binding) {
-            coronatestNegativeAntigenResultButton.setOnClickListener { viewModel.deleteTest() }
+            coronatestNegativeAntigenResultButton.setOnClickListener { viewModel.onDeleteTestClicked() }
             toolbar.setNavigationOnClickListener { viewModel.onClose() }
 
             viewModel.testAge.observe(viewLifecycleOwner) {
@@ -35,6 +36,8 @@ class RATResultNegativeFragment : Fragment(R.layout.fragment_submission_antigen_
 
             viewModel.events.observe(viewLifecycleOwner) {
                 when (it) {
+                    RATResultNegativeNavigation.ShowDeleteWarning ->
+                        DialogHelper.showDialog(deleteRatTestConfirmationDialog)
                     RATResultNegativeNavigation.Back -> popBackStack()
                 }
             }
@@ -68,8 +71,21 @@ class RATResultNegativeFragment : Fragment(R.layout.fragment_submission_antigen_
         val localTime = testAge.test.testedAt.toUserTimeZone()
         resultReceivedTimeAndDate.text = getString(
             R.string.coronatest_negative_antigen_result_time_date_placeholder,
-            localTime?.toString(DATE_FORMAT),
-            localTime?.toString(shortTime)
+            localTime.toString(DATE_FORMAT),
+            localTime.toString(shortTime)
+        )
+    }
+
+    private val deleteRatTestConfirmationDialog by lazy {
+        DialogHelper.DialogInstance(
+            requireActivity(),
+            R.string.submission_test_result_dialog_remove_test_title,
+            R.string.submission_test_result_dialog_remove_test_message,
+            R.string.submission_test_result_dialog_remove_test_button_positive,
+            R.string.submission_test_result_dialog_remove_test_button_negative,
+            positiveButtonFunction = {
+                viewModel.onDeleteTestConfirmed()
+            }
         )
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeNavigation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeNavigation.kt
index c5a874e10..bf801e3ca 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeNavigation.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeNavigation.kt
@@ -2,4 +2,5 @@ package de.rki.coronawarnapp.submission.ui.testresults.negative
 
 sealed class RATResultNegativeNavigation {
     object Back : RATResultNegativeNavigation()
+    object ShowDeleteWarning : RATResultNegativeNavigation()
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeViewModel.kt
index 607dde740..a7298cf45 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/testresults/negative/RATResultNegativeViewModel.kt
@@ -53,7 +53,7 @@ class RATResultNegativeViewModel @AssistedInject constructor(
         return TestAge(test = this, ageText)
     }
 
-    fun deleteTest() {
+    fun onDeleteTestConfirmed() {
         try {
             Timber.d("deleteTest")
             submissionRepository.removeTestFromDevice(CoronaTest.Type.RAPID_ANTIGEN)
@@ -64,6 +64,10 @@ class RATResultNegativeViewModel @AssistedInject constructor(
         }
     }
 
+    fun onDeleteTestClicked() {
+        events.postValue(RATResultNegativeNavigation.ShowDeleteWarning)
+    }
+
     fun onClose() {
         events.postValue(RATResultNegativeNavigation.Back)
     }
-- 
GitLab