Skip to content
Snippets Groups Projects
Unverified Commit 52606beb authored by Matthias Urhahn's avatar Matthias Urhahn Committed by GitHub
Browse files

Fix invisible tracing settings screen if the last calculation failed. (#2185)

TracingDetailsItemProvider is used for the tracing/risk details screen.
This has specific behavior that the logging period is not shown if the last calculation failed.
By reusing this data provider for the tracing settings, if the last calculation failed, we never set "loggingPeriod".
If loggingPeriod is null, the databinding causes the layout to be invisible.
parent e12aa6df
No related branches found
No related tags found
No related merge requests found
...@@ -11,8 +11,8 @@ import de.rki.coronawarnapp.exception.ExceptionCategory ...@@ -11,8 +11,8 @@ 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.InternalExposureNotificationClient import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient
import de.rki.coronawarnapp.nearby.TracingPermissionHelper import de.rki.coronawarnapp.nearby.TracingPermissionHelper
import de.rki.coronawarnapp.storage.TracingRepository
import de.rki.coronawarnapp.tracing.GeneralTracingStatus import de.rki.coronawarnapp.tracing.GeneralTracingStatus
import de.rki.coronawarnapp.tracing.ui.details.TracingDetailsItemProvider
import de.rki.coronawarnapp.tracing.ui.details.items.periodlogged.PeriodLoggedBox import de.rki.coronawarnapp.tracing.ui.details.items.periodlogged.PeriodLoggedBox
import de.rki.coronawarnapp.util.coroutine.DispatcherProvider import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
import de.rki.coronawarnapp.util.device.BackgroundModeStatus import de.rki.coronawarnapp.util.device.BackgroundModeStatus
...@@ -24,23 +24,20 @@ import de.rki.coronawarnapp.worker.BackgroundWorkScheduler ...@@ -24,23 +24,20 @@ import de.rki.coronawarnapp.worker.BackgroundWorkScheduler
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.plus import kotlinx.coroutines.plus
import timber.log.Timber import timber.log.Timber
class SettingsTracingFragmentViewModel @AssistedInject constructor( class SettingsTracingFragmentViewModel @AssistedInject constructor(
dispatcherProvider: DispatcherProvider, dispatcherProvider: DispatcherProvider,
tracingDetailsItemProvider: TracingDetailsItemProvider,
tracingStatus: GeneralTracingStatus, tracingStatus: GeneralTracingStatus,
tracingRepository: TracingRepository,
private val backgroundStatus: BackgroundModeStatus, private val backgroundStatus: BackgroundModeStatus,
tracingPermissionHelperFactory: TracingPermissionHelper.Factory tracingPermissionHelperFactory: TracingPermissionHelper.Factory
) : CWAViewModel(dispatcherProvider = dispatcherProvider) { ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
val loggingPeriod: LiveData<PeriodLoggedBox.Item> = tracingDetailsItemProvider.state val loggingPeriod: LiveData<PeriodLoggedBox.Item> = tracingRepository.activeTracingDaysInRetentionPeriod
.mapNotNull { items -> .map { PeriodLoggedBox.Item(activeTracingDaysInRetentionPeriod = it.toInt()) }
items.firstOrNull { it is PeriodLoggedBox.Item } as? PeriodLoggedBox.Item
}
.onEach { Timber.v("logginPeriod onEach") } .onEach { Timber.v("logginPeriod onEach") }
.asLiveData(dispatcherProvider.Main) .asLiveData(dispatcherProvider.Main)
......
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