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