From 4756b0c8f35d384667a1f27da2c48a65217f3b2c Mon Sep 17 00:00:00 2001
From: chris-cwa <chris.cwa.sap@gmail.com>
Date: Wed, 18 Nov 2020 21:40:09 +0100
Subject: [PATCH] flow a pair

---
 .../test/api/ui/TestForAPIFragment.kt         |  3 ++-
 ...iskLevelCalculationFragmentCWAViewModel.kt |  6 +++++-
 .../nearby/ExposureStateUpdateWorker.kt       |  2 +-
 .../coronawarnapp/risk/DefaultRiskLevels.kt   |  2 +-
 .../coronawarnapp/risk/ExposureResultStore.kt | 19 +++----------------
 .../mapping/DownloadConfigMapperTest.kt       |  1 -
 .../ExposureDetectionConfigMapperTest.kt      |  1 -
 7 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt
index cd1af3acc..df78daec5 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt
@@ -48,6 +48,7 @@ import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
 import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
 import org.joda.time.DateTime
@@ -165,7 +166,7 @@ class TestForAPIFragment : Fragment(R.layout.fragment_test_for_a_p_i),
 
             buttonRetrieveExposureSummary.setOnClickListener {
                 vm.launch {
-                    val summary = exposureSummaryRepository.exposureWindowEntities.toString()
+                    val summary = exposureSummaryRepository.entities.first().first.toString()
 
                     withContext(Dispatchers.Main) {
                         showToast(summary)
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt
index 9f7b65e8d..f521a36ac 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt
@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository
 import de.rki.coronawarnapp.exception.ExceptionCategory
 import de.rki.coronawarnapp.exception.reporting.report
 import de.rki.coronawarnapp.nearby.ENFClient
+import de.rki.coronawarnapp.risk.ExposureResultStore
 import de.rki.coronawarnapp.risk.RiskLevel
 import de.rki.coronawarnapp.risk.RiskLevelTask
 import de.rki.coronawarnapp.risk.RiskLevels
@@ -52,7 +53,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor(
     private val taskController: TaskController,
     private val keyCacheRepository: KeyCacheRepository,
     private val appConfigProvider: AppConfigProvider,
-    tracingCardStateProvider: TracingCardStateProvider
+    tracingCardStateProvider: TracingCardStateProvider,
+    private val exposureResultStore: ExposureResultStore
 ) : CWAViewModel(
     dispatcherProvider = dispatcherProvider
 ) {
@@ -99,6 +101,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor(
                     // Export File Reset
                     keyCacheRepository.clear()
 
+                    exposureResultStore.entities.value = Pair(emptyList(), null)
+
                     LocalData.lastCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw)
                     LocalData.lastSuccessfullyCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw)
                     LocalData.lastTimeDiagnosisKeysFromServerFetch(null)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ExposureStateUpdateWorker.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ExposureStateUpdateWorker.kt
index f52f40756..d5fee52d0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ExposureStateUpdateWorker.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ExposureStateUpdateWorker.kt
@@ -27,7 +27,7 @@ class ExposureStateUpdateWorker @AssistedInject constructor(
         try {
             Timber.v("worker to persist exposure summary started")
             enfClient.exposureWindows().also {
-                    exposureResultStore.exposureWindowEntities = Pair(it, null)
+                    exposureResultStore.entities.value = Pair(it, null)
                     Timber.v("exposure summary state updated: $it")
                 }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
index e77c26472..c8d817c8d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/DefaultRiskLevels.kt
@@ -110,7 +110,7 @@ class DefaultRiskLevels @Inject constructor(
 
         val aggregatedResult = aggregateResults(riskResultsPerWindow)
 
-        exposureResultStore.exposureWindowEntities = Pair(exposureWindows, aggregatedResult)
+        exposureResultStore.entities.value = Pair(exposureWindows, aggregatedResult)
 
         val highRisk = aggregatedResult.totalRiskLevel == ProtoRiskLevel.HIGH
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/ExposureResultStore.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/ExposureResultStore.kt
index 27cefe75b..4e5923cbf 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/ExposureResultStore.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/ExposureResultStore.kt
@@ -2,25 +2,12 @@ package de.rki.coronawarnapp.risk
 
 import com.google.android.gms.nearby.exposurenotification.ExposureWindow
 import de.rki.coronawarnapp.risk.result.AggregatedRiskResult
-import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
 import javax.inject.Inject
 
 class ExposureResultStore @Inject constructor() {
 
-    private val internalResult = MutableStateFlow<AggregatedRiskResult?>(null)
-    val result: Flow<AggregatedRiskResult?> = internalResult
-
-    private val internalWindows = MutableStateFlow<List<ExposureWindow>>(emptyList())
-    val windows: Flow<List<ExposureWindow>> = internalWindows
-
-    private var entities: Pair<List<ExposureWindow>, AggregatedRiskResult?> = Pair(emptyList(), null)
-
-    var exposureWindowEntities: Pair<List<ExposureWindow>, AggregatedRiskResult?>
-        get() = entities
-        set(value) {
-            entities = value
-            internalWindows.value = value.first
-            internalResult.value = value.second
-        }
+    val entities = MutableStateFlow<ExposureResult>(Pair(emptyList(), null))
 }
+
+typealias ExposureResult = Pair<List<ExposureWindow>, AggregatedRiskResult?>
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/DownloadConfigMapperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/DownloadConfigMapperTest.kt
index 8eafdc766..a048e1468 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/DownloadConfigMapperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/DownloadConfigMapperTest.kt
@@ -1,7 +1,6 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
 import de.rki.coronawarnapp.diagnosiskeys.server.LocationCode
-import de.rki.coronawarnapp.server.protocols.internal.AppConfig
 import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid
 import de.rki.coronawarnapp.server.protocols.internal.v2.KeyDownloadParameters
 import io.kotest.matchers.shouldBe
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ExposureDetectionConfigMapperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ExposureDetectionConfigMapperTest.kt
index 7c58d77c4..d93da3276 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ExposureDetectionConfigMapperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ExposureDetectionConfigMapperTest.kt
@@ -1,6 +1,5 @@
 package de.rki.coronawarnapp.appconfig.mapping
 
-import de.rki.coronawarnapp.server.protocols.internal.AppConfig
 import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid
 import de.rki.coronawarnapp.server.protocols.internal.v2.ExposureDetectionParameters.ExposureDetectionParametersAndroid
 import io.kotest.matchers.shouldBe
-- 
GitLab