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