Skip to content
Snippets Groups Projects
Commit 4756b0c8 authored by chris-cwa's avatar chris-cwa
Browse files

flow a pair

parent 92a675dc
No related branches found
No related tags found
No related merge requests found
...@@ -48,6 +48,7 @@ import de.rki.coronawarnapp.util.ui.viewBindingLazy ...@@ -48,6 +48,7 @@ import de.rki.coronawarnapp.util.ui.viewBindingLazy
import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
import de.rki.coronawarnapp.util.viewmodel.cwaViewModels import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.joda.time.DateTime import org.joda.time.DateTime
...@@ -165,7 +166,7 @@ class TestForAPIFragment : Fragment(R.layout.fragment_test_for_a_p_i), ...@@ -165,7 +166,7 @@ class TestForAPIFragment : Fragment(R.layout.fragment_test_for_a_p_i),
buttonRetrieveExposureSummary.setOnClickListener { buttonRetrieveExposureSummary.setOnClickListener {
vm.launch { vm.launch {
val summary = exposureSummaryRepository.exposureWindowEntities.toString() val summary = exposureSummaryRepository.entities.first().first.toString()
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
showToast(summary) showToast(summary)
......
...@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository ...@@ -12,6 +12,7 @@ import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository
import de.rki.coronawarnapp.exception.ExceptionCategory import de.rki.coronawarnapp.exception.ExceptionCategory
import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.exception.reporting.report
import de.rki.coronawarnapp.nearby.ENFClient import de.rki.coronawarnapp.nearby.ENFClient
import de.rki.coronawarnapp.risk.ExposureResultStore
import de.rki.coronawarnapp.risk.RiskLevel import de.rki.coronawarnapp.risk.RiskLevel
import de.rki.coronawarnapp.risk.RiskLevelTask import de.rki.coronawarnapp.risk.RiskLevelTask
import de.rki.coronawarnapp.risk.RiskLevels import de.rki.coronawarnapp.risk.RiskLevels
...@@ -52,7 +53,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor( ...@@ -52,7 +53,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor(
private val taskController: TaskController, private val taskController: TaskController,
private val keyCacheRepository: KeyCacheRepository, private val keyCacheRepository: KeyCacheRepository,
private val appConfigProvider: AppConfigProvider, private val appConfigProvider: AppConfigProvider,
tracingCardStateProvider: TracingCardStateProvider tracingCardStateProvider: TracingCardStateProvider,
private val exposureResultStore: ExposureResultStore
) : CWAViewModel( ) : CWAViewModel(
dispatcherProvider = dispatcherProvider dispatcherProvider = dispatcherProvider
) { ) {
...@@ -99,6 +101,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor( ...@@ -99,6 +101,8 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor(
// Export File Reset // Export File Reset
keyCacheRepository.clear() keyCacheRepository.clear()
exposureResultStore.entities.value = Pair(emptyList(), null)
LocalData.lastCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw) LocalData.lastCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw)
LocalData.lastSuccessfullyCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw) LocalData.lastSuccessfullyCalculatedRiskLevel(RiskLevel.UNDETERMINED.raw)
LocalData.lastTimeDiagnosisKeysFromServerFetch(null) LocalData.lastTimeDiagnosisKeysFromServerFetch(null)
......
...@@ -27,7 +27,7 @@ class ExposureStateUpdateWorker @AssistedInject constructor( ...@@ -27,7 +27,7 @@ class ExposureStateUpdateWorker @AssistedInject constructor(
try { try {
Timber.v("worker to persist exposure summary started") Timber.v("worker to persist exposure summary started")
enfClient.exposureWindows().also { enfClient.exposureWindows().also {
exposureResultStore.exposureWindowEntities = Pair(it, null) exposureResultStore.entities.value = Pair(it, null)
Timber.v("exposure summary state updated: $it") Timber.v("exposure summary state updated: $it")
} }
......
...@@ -110,7 +110,7 @@ class DefaultRiskLevels @Inject constructor( ...@@ -110,7 +110,7 @@ class DefaultRiskLevels @Inject constructor(
val aggregatedResult = aggregateResults(riskResultsPerWindow) val aggregatedResult = aggregateResults(riskResultsPerWindow)
exposureResultStore.exposureWindowEntities = Pair(exposureWindows, aggregatedResult) exposureResultStore.entities.value = Pair(exposureWindows, aggregatedResult)
val highRisk = aggregatedResult.totalRiskLevel == ProtoRiskLevel.HIGH val highRisk = aggregatedResult.totalRiskLevel == ProtoRiskLevel.HIGH
......
...@@ -2,25 +2,12 @@ package de.rki.coronawarnapp.risk ...@@ -2,25 +2,12 @@ package de.rki.coronawarnapp.risk
import com.google.android.gms.nearby.exposurenotification.ExposureWindow import com.google.android.gms.nearby.exposurenotification.ExposureWindow
import de.rki.coronawarnapp.risk.result.AggregatedRiskResult import de.rki.coronawarnapp.risk.result.AggregatedRiskResult
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import javax.inject.Inject import javax.inject.Inject
class ExposureResultStore @Inject constructor() { class ExposureResultStore @Inject constructor() {
private val internalResult = MutableStateFlow<AggregatedRiskResult?>(null) val entities = MutableStateFlow<ExposureResult>(Pair(emptyList(), 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
}
} }
typealias ExposureResult = Pair<List<ExposureWindow>, AggregatedRiskResult?>
package de.rki.coronawarnapp.appconfig.mapping package de.rki.coronawarnapp.appconfig.mapping
import de.rki.coronawarnapp.diagnosiskeys.server.LocationCode 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.AppConfigAndroid
import de.rki.coronawarnapp.server.protocols.internal.v2.KeyDownloadParameters import de.rki.coronawarnapp.server.protocols.internal.v2.KeyDownloadParameters
import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldBe
......
package de.rki.coronawarnapp.appconfig.mapping 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.AppConfigAndroid
import de.rki.coronawarnapp.server.protocols.internal.v2.ExposureDetectionParameters.ExposureDetectionParametersAndroid import de.rki.coronawarnapp.server.protocols.internal.v2.ExposureDetectionParameters.ExposureDetectionParametersAndroid
import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldBe
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment