From c9abb9d0c12a35f47e4c0194b4428b48ffeff3c6 Mon Sep 17 00:00:00 2001 From: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com> Date: Thu, 29 Apr 2021 08:13:35 +0200 Subject: [PATCH] Change text for days since installation (EXPOSUREAPP-6574) (#2969) * add strings for 0 and 1 day since installation * klint * change calculation * fix test * use get Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../installTime/InstallTimeProvider.kt | 22 ++++++++++++++----- .../tracing/states/TracingState.kt | 11 +++++----- .../items/periodlogged/PeriodLoggedBox.kt | 4 ++-- .../util/TimeAndDateExtensions.kt | 2 ++ .../src/main/res/values-de/strings.xml | 4 ++++ .../src/main/res/values/strings.xml | 4 ++++ .../details/TracingDetailsItemProviderTest.kt | 2 +- 7 files changed, 35 insertions(+), 14 deletions(-) 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 9aa763874..cf451e06a 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 58cf7f537..d105c9676 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 beb754001..e82d592f1 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 64dcf305d..60b57e29d 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 afc565fa7..5a269d05f 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 fb1e73aba..136d57769 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 1be311fd3..bfdc6180d 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) -- GitLab