diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt index 04b08cdd10b8ef86ebcb046d27c86077fdc6fbf9..279d405c9973be0178628c99591b7104c7c9297f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt @@ -5,9 +5,11 @@ import androidx.core.content.edit import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.R import de.rki.coronawarnapp.risk.RiskLevel +import de.rki.coronawarnapp.util.preferences.createFlowPreference import de.rki.coronawarnapp.util.security.SecurityHelper.globalEncryptedSharedPreferencesInstance import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.map import java.util.Date /** @@ -399,6 +401,12 @@ object LocalData { return Date(time) } + fun lastTimeDiagnosisKeysFromServerFetchFlow() = + getSharedPreferenceInstance() + .createFlowPreference<Long?>(CoronaWarnApplication.getAppContext() + .getString(R.string.preference_timestamp_diagnosis_keys_fetch), 0L).flow + .map { if (it != null && it != 0L) Date(it) else null } + /** * Sets the last time the server fetched the diagnosis keys from the server as Date object * from the EncryptedSharedPrefs diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt index e45cbc98f179654ac80834bbf44931a2cc1e1608..64f63583aa271339a0fd101bb35de41cf6d0f13a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt @@ -49,22 +49,11 @@ class TracingRepository @Inject constructor( private val timeStamper: TimeStamper ) { - private val internalLastTimeDiagnosisKeysFetched = MutableStateFlow<Date?>(null) - val lastTimeDiagnosisKeysFetched: Flow<Date?> = internalLastTimeDiagnosisKeysFetched + val lastTimeDiagnosisKeysFetched: Flow<Date?> = LocalData.lastTimeDiagnosisKeysFromServerFetchFlow() private val internalActiveTracingDaysInRetentionPeriod = MutableStateFlow(0L) val activeTracingDaysInRetentionPeriod: Flow<Long> = internalActiveTracingDaysInRetentionPeriod - /** - * Refresh the last time diagnosis keys fetched date with the current shared preferences state. - * - * @see LocalData - */ - fun refreshLastTimeDiagnosisKeysFetchedDate() { - internalLastTimeDiagnosisKeysFetched.value = - LocalData.lastTimeDiagnosisKeysFromServerFetch() - } - private val internalIsRefreshing = taskController.tasks.map { it.isDownloadDiagnosisKeysTaskRunning() || it.isRiskLevelTaskRunning() } @@ -104,7 +93,6 @@ class TracingRepository @Inject constructor( ) ) taskController.submit(DefaultTaskRequest(RiskLevelTask::class)) - refreshLastTimeDiagnosisKeysFetchedDate() TimerHelper.startManualKeyRetrievalTimer() } } @@ -152,7 +140,6 @@ class TracingRepository @Inject constructor( DownloadDiagnosisKeysTask.Arguments() ) ) - refreshLastTimeDiagnosisKeysFetchedDate() TimerHelper.checkManualKeyRetrievalTimer() taskController.submit(DefaultTaskRequest(RiskLevelTask::class)) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index ea111127b91b13506bd3a057672c47a837e4d555..0141c47ef0790f12f9a80c15bfb3b2cf9f8afe15 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -104,7 +104,6 @@ class HomeFragmentViewModel @AssistedInject constructor( // TODO the ordering here is weird, do we expect these to run in sequence? tracingRepository.refreshRiskLevel() tracingRepository.refreshExposureSummary() - tracingRepository.refreshLastTimeDiagnosisKeysFetchedDate() tracingRepository.refreshActiveTracingDaysInRetentionPeriod() TimerHelper.checkManualKeyRetrievalTimer() tracingRepository.refreshLastSuccessfullyCalculatedScore() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt index 2075f82ed79aa0788b3aeec2707de2a86c338597..0c7d1c0197eb8260ead0b4e212dcf5603894417d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/RiskDetailsFragmentViewModel.kt @@ -37,7 +37,6 @@ class RiskDetailsFragmentViewModel @AssistedInject constructor( fun refreshData() { tracingRepository.refreshRiskLevel() tracingRepository.refreshExposureSummary() - tracingRepository.refreshLastTimeDiagnosisKeysFetchedDate() TimerHelper.checkManualKeyRetrievalTimer() tracingRepository.refreshActiveTracingDaysInRetentionPeriod() }