diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/installTime/InstallTimeProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/installTime/InstallTimeProvider.kt index 9aa76387459176aa9471fe55a2435637f28f48e4..cf451e06ade31ffc272e83774a5cb7f011e7a163 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/installTime/InstallTimeProvider.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/installTime/InstallTimeProvider.kt @@ -1,8 +1,11 @@ package de.rki.coronawarnapp.installTime import android.content.Context -import de.rki.coronawarnapp.util.TimeAndDateExtensions.roundUpMsToDays +import de.rki.coronawarnapp.util.TimeAndDateExtensions.toLocalDateUserTz import de.rki.coronawarnapp.util.di.AppContext +import org.joda.time.Days +import org.joda.time.Instant +import org.joda.time.LocalDate import javax.inject.Inject import javax.inject.Singleton @@ -10,10 +13,17 @@ import javax.inject.Singleton class InstallTimeProvider @Inject constructor( @AppContext private val context: Context ) { - private val installTime: Long = context - .packageManager - .getPackageInfo(context.packageName, 0) - .firstInstallTime + private val dayOfInstallation: LocalDate = Instant.ofEpochMilli( + context + .packageManager + .getPackageInfo(context.packageName, 0) + .firstInstallTime + ) + .toLocalDateUserTz() - val daysSinceInstallation: Long get() = (System.currentTimeMillis() - installTime).roundUpMsToDays() + val today: LocalDate + get() = Instant.now().toLocalDateUserTz() + + val daysSinceInstallation: Int + get() = Days.daysBetween(dayOfInstallation, today).days } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt index 58cf7f5372fe8b00a875ead825d7347ae7343e20..d105c967676a1df06bcbd142c4dfbfddbe412974 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/states/TracingState.kt @@ -94,7 +94,7 @@ data class LowRisk( val lastEncounterAt: LocalDate?, val allowManualUpdate: Boolean, val daysWithEncounters: Int, - val daysSinceInstallation: Long + val daysSinceInstallation: Int ) : TracingState() { val showUpdateButton: Boolean = allowManualUpdate && !isInDetailsMode @@ -131,8 +131,11 @@ data class LowRisk( } fun getDaysSinceInstall(context: Context): String = - context.getString(R.string.risk_card_body_days_since_installation) - .format(daysSinceInstallation) + when (daysSinceInstallation) { + 0 -> context.getString(R.string.risk_card_body_installation_today) + 1 -> context.getString(R.string.risk_card_body_installation_yesterday) + else -> context.getString(R.string.risk_card_body_days_since_installation).format(daysSinceInstallation) + } fun appInstalledForOverTwoWeeks(): Boolean = daysSinceInstallation < 14 && lastEncounterAt == null @@ -154,8 +157,6 @@ data class LowRisk( } fun isGoneOnContentLowView(context: Context) = getRiskContactLast(context) != null && !isInDetailsMode - - fun getProgressColorLowRisk(context: Context) = context.getColorCompat(R.color.colorStableLight) } // tracing_content_failed_view diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/periodlogged/PeriodLoggedBox.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/periodlogged/PeriodLoggedBox.kt index beb7540018c54a015621db14a52892c100b5c65c..e82d592f1abd4a7f01f58c43b38e8156cba2abd3 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/periodlogged/PeriodLoggedBox.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/tracing/ui/details/items/periodlogged/PeriodLoggedBox.kt @@ -33,12 +33,12 @@ class PeriodLoggedBox( } data class Item( - val daysSinceInstallation: Long, + val daysSinceInstallation: Int, val tracingStatus: GeneralTracingStatus.Status ) : DetailsItem { fun getInstallTimePeriodLogged(context: Context): String = - if (daysSinceInstallation < 14L) { + if (daysSinceInstallation < 14) { context.getString( R.string.risk_details_information_body_period_logged_assessment_under_14_days ).format(daysSinceInstallation) 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 64dcf305d5544431a1ffd6e5e5a118a5a8d303a2..60b57e29d0d30c9bf49fd6b4bd21946b4f7411c9 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 @@ -102,6 +102,8 @@ object TimeAndDateExtensions { val Instant.seconds get() = TimeUnit.MILLISECONDS.toSeconds(millis) fun Instant.toUserTimeZone() = this.toDateTime(DateTimeZone.forTimeZone(TimeZone.getDefault())) + + fun Instant.toLocalDateUserTz(): LocalDate = this.toUserTimeZone().toLocalDate() } typealias HourInterval = Long diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index afc565fa76ca0f0600dfe3a0e788e3748ec829b5..5a269d05f838f751f88531439d414c92d5dd3896 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -65,6 +65,10 @@ <!-- XTXT: risk card - Days since installation if < 14 days --> <string name="risk_card_body_days_since_installation">"Seit %s Tagen installiert"</string> + <!-- XTXT: risk card - Days since installation if today --> + <string name="risk_card_body_installation_today">Seit heute installiert</string> + <!-- XTXT: risk card - Days since installation if yesterday --> + <string name="risk_card_body_installation_yesterday">Seit gestern installiert</string> <!-- XTXT: risk card - tracing active for x out of 14 days --> <string name="risk_card_body_saved_days">"Risiko-Ermittlung war für %1$s der letzten 14 Tage aktiv"</string> <!-- XTXT: risk card- tracing active for 14 out of 14 days --> diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index fb1e73aba05fe6b365a26adef014ed754427669e..136d577696f2648f5058bdd0d9f9bc11bc4885e6 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -73,6 +73,10 @@ <!-- XTXT: risk card - Days since installation if < 14 days --> <string name="risk_card_body_days_since_installation">"Installed %s days ago"</string> + <!-- XTXT: risk card - Days since installation if today --> + <string name="risk_card_body_installation_today"></string> + !-- XTXT: risk card - Days since installation if yesterday --> + <string name="risk_card_body_installation_yesterday"></string> <!-- XTXT: risk card - tracing active for x out of 14 days --> <string name="risk_card_body_saved_days">"Exposure logging was active for %1$s of the past 14 days"</string> <!-- XTXT: risk card- tracing active for 14 out of 14 days --> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProviderTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProviderTest.kt index 1be311fd3e44adab39c9b2480871a5471191892c..bfdc6180d441c4ce3b86ebbdb43cf7c255de0080 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProviderTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/tracing/ui/details/TracingDetailsItemProviderTest.kt @@ -64,7 +64,7 @@ class TracingDetailsItemProviderTest : BaseTest() { status: GeneralTracingStatus.Status, riskState: RiskState, matchedKeyCount: Int, - daysSinceInstallation: Long, + daysSinceInstallation: Int, availableSurveys: List<Surveys.Type> = emptyList() ) { every { tracingStatus.generalStatus } returns flowOf(status)