diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt index 647ff840aaa8c4dbe467e13d4ea26dc7ecf7a2b9..d457ee7eb3f591ca3d179da0f3dfe81b0e627c4b 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/MainActivityTest.kt @@ -17,6 +17,7 @@ import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewFragment import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewViewModel import de.rki.coronawarnapp.contactdiary.ui.overview.adapter.ListItem +import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler import de.rki.coronawarnapp.environment.EnvironmentSetup import de.rki.coronawarnapp.main.CWASettings @@ -440,4 +441,10 @@ class MainProviderModule { mockk<ContactDiaryWorkScheduler>(relaxed = true).apply { every { schedulePeriodic() } just Runs } + + @Provides + fun dataDonationAnalyticsScheduler(): DataDonationAnalyticsScheduler = + mockk<DataDonationAnalyticsScheduler>(relaxed = true).apply { + every { schedulePeriodic() } just Runs + } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt index 92b10563715bedf2b8562702e87df6219bd57bc7..f797cf5b89cd738c7f47d106b854ef1f2ec08064 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt @@ -92,7 +92,6 @@ class CoronaWarnApplication : Application(), HasAndroidInjector { deadmanNotificationScheduler.schedulePeriodic() } contactDiaryWorkScheduler.schedulePeriodic() - dataDonationAnalyticsScheduler.schedulePeriodic() } deviceTimeHandler.launch() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt index 7483d2c46e6c76ca358ca12932b834a45aa33f2a..3b556a0025730a7471f0d34fa29adcfd9da83c14 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsScheduler.kt @@ -22,12 +22,13 @@ class DataDonationAnalyticsScheduler @Inject constructor( * Enqueue background analytics submission periodic work */ fun schedulePeriodic() { - val additionalDelay = timeCalculation.getDelay() + val initialDelay = timeCalculation.getDelay() + // Create unique work and enqueue workManager.enqueueUniquePeriodicWork( PERIODIC_WORK_NAME, ExistingPeriodicWorkPolicy.KEEP, - workBuilder.buildPeriodicWork(additionalDelay) + workBuilder.buildPeriodicWork(initialDelay) ) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt index 748466cc438841223061c4c66563dbaaf7243cf7..60a06d08e0a5cf6fa324cabf4de22c8f7be73ae0 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/analytics/worker/DataDonationAnalyticsWorkBuilder.kt @@ -14,12 +14,12 @@ import javax.inject.Inject @Reusable class DataDonationAnalyticsWorkBuilder @Inject constructor() { - fun buildPeriodicWork(additionalDelay: Duration): PeriodicWorkRequest = + fun buildPeriodicWork(initialDelay: Duration): PeriodicWorkRequest = PeriodicWorkRequestBuilder<DataDonationAnalyticsPeriodicWorker>( DateTimeConstants.HOURS_PER_DAY.toLong(), TimeUnit.HOURS ) .setInitialDelay( - DateTimeConstants.HOURS_PER_DAY.toLong() + additionalDelay.standardHours, + initialDelay.standardHours, TimeUnit.HOURS ) .setBackoffCriteria( diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt index 7983f54e6eb845672907c2f89018a16f63d5733a..9fed2fe251eec52b802d36893b72ce6d2667d132 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt @@ -17,6 +17,7 @@ import dagger.android.HasAndroidInjector import de.rki.coronawarnapp.R import de.rki.coronawarnapp.contactdiary.retention.ContactDiaryWorkScheduler import de.rki.coronawarnapp.databinding.ActivityMainBinding +import de.rki.coronawarnapp.datadonation.analytics.worker.DataDonationAnalyticsScheduler import de.rki.coronawarnapp.deadman.DeadmanNotificationScheduler import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.ui.base.startActivitySafely @@ -61,6 +62,7 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector { @Inject lateinit var powerManagement: PowerManagement @Inject lateinit var deadmanScheduler: DeadmanNotificationScheduler @Inject lateinit var contactDiaryWorkScheduler: ContactDiaryWorkScheduler + @Inject lateinit var dataDonationAnalyticsScheduler: DataDonationAnalyticsScheduler override fun onCreate(savedInstanceState: Bundle?) { AppInjector.setup(this) @@ -108,6 +110,7 @@ class MainActivity : AppCompatActivity(), HasAndroidInjector { scheduleWork() vm.doBackgroundNoiseCheck() contactDiaryWorkScheduler.schedulePeriodic() + dataDonationAnalyticsScheduler.schedulePeriodic() if (!LocalData.isAllowedToSubmitDiagnosisKeys()) { deadmanScheduler.schedulePeriodic() }