diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt index 2e90edd67d3ae3aa8396d50c7f1258ada2b38e15..5a6537cc9503b2612060e550bb2e4e9fd23846df 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt @@ -76,14 +76,14 @@ object TimeVariables { /** * The timeRange until the calculated exposure figures are rated as stale. - * In days. + * In hours. */ - private const val MAX_STALE_EXPOSURE_RISK_RANGE = 1 + private const val MAX_STALE_EXPOSURE_RISK_RANGE = 48 /** * Getter function for [MAX_STALE_EXPOSURE_RISK_RANGE] * - * @return stale threshold in days + * @return stale threshold in hours */ fun getMaxStaleExposureRiskRange(): Int = MAX_STALE_EXPOSURE_RISK_RANGE @@ -106,6 +106,7 @@ object TimeVariables { * Internal requirements: 2 hours = 7200000 milliseconds * Test value: 1 minute */ + // todo exchange with real value (currently 120 min) private const val MANUAL_KEY_RETRIEVAL_DELAY = 60000L /** diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt index 32e157f3771cbb6e23cb8a4fc9761b7b0b064267..df32874cc6044d524cff9c095c2d15f946c2d3ec 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt @@ -33,7 +33,6 @@ import de.rki.coronawarnapp.transaction.RiskLevelTransaction.RiskLevelTransactio import de.rki.coronawarnapp.transaction.RiskLevelTransaction.RiskLevelTransactionState.RETRIEVE_APPLICATION_CONFIG import de.rki.coronawarnapp.transaction.RiskLevelTransaction.RiskLevelTransactionState.RETRIEVE_EXPOSURE_SUMMARY import de.rki.coronawarnapp.transaction.RiskLevelTransaction.RiskLevelTransactionState.UPDATE_RISK_LEVEL -import de.rki.coronawarnapp.util.TimeAndDateExtensions.millisecondsToDays import de.rki.coronawarnapp.util.TimeAndDateExtensions.millisecondsToHours import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -284,7 +283,7 @@ object RiskLevelTransaction : Transaction() { /** we only return outdated risk level if the threshold is reached AND the active tracing time is above the defined threshold because [UNKNOWN_RISK_INITIAL] overrules [UNKNOWN_RISK_OUTDATED_RESULTS] */ - if (timeSinceLastDiagnosisKeyFetchFromServer.millisecondsToDays() > + if (timeSinceLastDiagnosisKeyFetchFromServer.millisecondsToHours() > TimeVariables.getMaxStaleExposureRiskRange() && isActiveTracingTimeAboveThreshold() ) { return@executeState UNKNOWN_RISK_OUTDATED_RESULTS.also { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt index 7f07904ca1cfbd92577c8e4da08f34834bb486aa..5169ec2f57af3806c8da5a6e6911e0832a53114a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt @@ -2,7 +2,6 @@ package de.rki.coronawarnapp.util import org.joda.time.DateTime import org.joda.time.DateTimeZone -import org.joda.time.Instant import org.joda.time.chrono.GJChronology import org.joda.time.format.DateTimeFormat import java.util.Date @@ -14,12 +13,6 @@ object TimeAndDateExtensions { private const val MS_TO_HOURS = (1000 * 60 * 60) private const val MS_TO_SECONDS = 1000 - fun getCurrentHourUTC(): Int = DateTime(Instant.now(), DateTimeZone.UTC).hourOfDay().get() - - fun Date.getHourFromUTCDate(): Int = DateTime(this, DateTimeZone.UTC).hourOfDay().get() - - fun String.toMillis(): Long? = DateTime.parse(this).millis - fun Date.toServerFormat(): String = DateTimeFormat.forPattern("yyyy-MM-dd").withChronology(GJChronology.getInstance()) .withZoneUTC() @@ -31,10 +24,6 @@ object TimeAndDateExtensions { return this.div(MS_TO_SECONDS) } - fun Long.millisecondsToDays(): Long { - return this.div(MS_TO_DAYS) - } - fun Long.millisecondsToHours(): Long { return this.div(MS_TO_HOURS) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/transaction/RiskLevelTransactionTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/transaction/RiskLevelTransactionTest.kt index 83ec19259cf2fb8f836ef85ba7de0a96c403305b..db67511c30dbcf80eafd6701fef7667b3dfe5065 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/transaction/RiskLevelTransactionTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/transaction/RiskLevelTransactionTest.kt @@ -118,14 +118,15 @@ class RiskLevelTransactionTest { val testRiskLevel = UNKNOWN_RISK_OUTDATED_RESULTS - val twoDaysAboveMaxStale = TimeUnit.DAYS.toMillis(TimeVariables.getMaxStaleExposureRiskRange().plus(2).toLong()) + val twoHoursAboveMaxStale = + TimeUnit.HOURS.toMillis(TimeVariables.getMaxStaleExposureRiskRange().plus(2).toLong()) // tracing is activated coEvery { InternalExposureNotificationClient.asyncIsEnabled() } returns true // the last time we fetched keys from the server is above the threshold every { TimeVariables.getLastTimeDiagnosisKeysFromServerFetch() } returns System.currentTimeMillis() - .minus(twoDaysAboveMaxStale) + .minus(twoHoursAboveMaxStale) // active tracing time is 1h above the threshold every { TimeVariables.getTimeActiveTracingDuration() } returns TimeUnit.HOURS.toMillis(