Monitor ENF calculation more closely for better progress feedback (EXPOSUREAPP-2743) (#1473)
* Add a `CalcluationTracker` class that can tell us about the ENF's calcluations. * Introduces new reactive data provider "HotData" that allows lazy init and safe updates. * Add calculation time out enforcer (60min), check every 5min. * Show `isRefreshing` when we are either downloading keys or the ENF is still calculating. * Rename "token" to "identifier", we'll likely keep using this class for ENF Window Mode, which has no more "tokens". * Remove "state", we can only know whether it's running and that can be based on the `finishedAt` timestamp. Also improve test readability a bit and added more edge cases when checking timeouts. * Additional test cases for ENF calculation edge cases * We are fine with tracking the last 5 calculations. * Exclude timeouts from `latestFinishedCalculation` * HotData should be named HotDataFlow * Clean up coroutine/flow packages. * Remove additional combineTransform instances, to prevent accidental casting errors in the future. * We should only forward calls to the provider and the calculation tracker if the list of key files is non-empty. * Add unit test to check for GSON data class restoration behavior with transient fields. GSON sets it to false, and does not eval the properties to set them. * Lints, Lints, Lints * Only check the calculation status of the newest submission. The chance for overlapping calculations is rare with batched key submission, and if gives us a lower chance of actually being affected by timeouts. * Reduce timeout for tracked calculations to 15 minutes after discussion with Maximilian. In worst case scenarios no calculation exceeded 7 minutes. * Reduce timeout check interval to 3 minutes, due to lowered overall timeout limit. * Add additional test case that checks that a late result, past timeout, overwrites the timeout. * Create `BaseGson` instance within the DI graph use it. Allows use to later set global settings (pretty print for testers?), or hook up custom serializers app-wide.
Showing
- Corona-Warn-App/src/main/AndroidManifest.xml 1 addition, 0 deletionsCorona-Warn-App/src/main/AndroidManifest.xml
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/environment/EnvironmentSetup.kt 4 additions, 3 deletions...java/de/rki/coronawarnapp/environment/EnvironmentSetup.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/UnknownBroadcastException.kt 2 additions, 10 deletions.../rki/coronawarnapp/exception/UnknownBroadcastException.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ENFClient.kt 28 additions, 2 deletions...pp/src/main/java/de/rki/coronawarnapp/nearby/ENFClient.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ENFModule.kt 7 additions, 0 deletions...pp/src/main/java/de/rki/coronawarnapp/nearby/ENFModule.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/calculationtracker/Calculation.kt 31 additions, 0 deletions...awarnapp/nearby/modules/calculationtracker/Calculation.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/calculationtracker/CalculationTracker.kt 11 additions, 0 deletions...p/nearby/modules/calculationtracker/CalculationTracker.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/calculationtracker/CalculationTrackerStorage.kt 60 additions, 0 deletions...y/modules/calculationtracker/CalculationTrackerStorage.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/calculationtracker/DefaultCalculationTracker.kt 143 additions, 0 deletions...y/modules/calculationtracker/DefaultCalculationTracker.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt 80 additions, 34 deletions...rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ReceiverBinder.kt 6 additions, 1 deletion...main/java/de/rki/coronawarnapp/receiver/ReceiverBinder.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/TracingRepository.kt 10 additions, 2 deletions...in/java/de/rki/coronawarnapp/storage/TracingRepository.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt 4 additions, 4 deletions.../de/rki/coronawarnapp/ui/tracing/card/TracingCardState.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt 41 additions, 25 deletions...coronawarnapp/ui/tracing/card/TracingCardStateProvider.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt 1 addition, 1 deletion...e/rki/coronawarnapp/ui/tracing/common/BaseTracingState.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsState.kt 1 addition, 1 deletion...i/coronawarnapp/ui/tracing/details/TracingDetailsState.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/details/TracingDetailsStateProvider.kt 11 additions, 15 deletions...warnapp/ui/tracing/details/TracingDetailsStateProvider.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/tracing/settings/SettingsTracingFragmentViewModel.kt 1 addition, 1 deletion...p/ui/tracing/settings/SettingsTracingFragmentViewModel.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/BackgroundModeStatus.kt 1 addition, 1 deletion...in/java/de/rki/coronawarnapp/util/BackgroundModeStatus.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/MapExtensions.kt 5 additions, 0 deletions.../src/main/java/de/rki/coronawarnapp/util/MapExtensions.kt
Loading
Please register or sign in to comment