Refactor missused ViewModels, support automated UI tests and screenshots (EXPOSUREAPP-2946) (#1415)
* Introduced `TracingCardState` and `TracingDetailsState`.
Removed all direct viewmodel/livedata access from all nested layouts for `TracingViewModel`.
Removed `FormatterRiskHelper`.
Introduced logic to reactively update the UI state if bluetooth, location or tracing state changes.
TODO:
* Finish tests in TracingCardStateTest.kt and TracingDetailsStateTest.kt
* Finish TracingDetailsViewModel.kt and TracingCardViewModel.kt
* Remove obsolete dependencies on TracingViewModel.kt and singletons RiskLevelRepository.kt, TracingRepository.kt
* Breakthrough, cards update again.
* Further cleanup of TracingViewModel.kt, TracingRepository.kt
Still not quite there yet, too many calls going into every direction, back and forth, instead of just top->down, but we are getting there.
We want data flow from business logic code to the UI, keep the UI KISS.
* Update TracingCardState tests to account for changes
* More refactoring, TracingViewModel.kt is now finally gone.
* Fix risk details card, we reuse the cardviewmodel but need to overwrite the `showDetails` flag depending from where it's used.
* Refactored several properties (notification related) out of SettingsViewModel/Repository
* Fix injection
* Refactoring submission related databinding code on the home fragment
* Make TracingRepository.kt injectable and change viewmodel scoping for refresh calls to app scope.
* Remove additional formatter calls from submission cards on home screen.
* Refactored additional SubmissionViewModel logic into SubmissionRepository on the Homescreen.
First UI Test is now passing.
Simplified ViewModel instantiation related code.
Prepared HomeFragment for smoother UI state changes, less reloading.
* Improved home,tracing-details and tracing-settings loading behavior, less flickering.
Fixed LiveData value assignment on background-thread.
* New reactive provider for Bluetooth and Location status.
Cleaned up ConnectivityHelper.kt partially.
* Implement remaining tests, batch 1.
* Implement remaining tests, batch 2.
* Fix lint issues.
* Removed a few codesmells and code duplication.
Introduced Flow.shareLatest(...)
* Removed unused parameters.
* LINT fixes.
* Fix unit test failing due to missing mocks.
* Address PR comments.
* Improve UI loading states, remove flickering.
* Remove log spam due to polling values, add extra abort condition that checks for cancellation.
Co-authored-by:
ralfgehrer <mail@ralfgehrer.com>
Showing
- Corona-Warn-App/build.gradle 8 additions, 2 deletionsCorona-Warn-App/build.gradle
- Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt 18 additions, 5 deletions...ava/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt
- Corona-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt 2 additions, 2 deletions...a-Warn-App/src/androidTest/java/testhelpers/BaseUITest.kt
- Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt 23 additions, 25 deletions...va/de/rki/coronawarnapp/test/api/ui/TestForAPIFragment.kt
- Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragment.kt 7 additions, 5 deletions...app/test/risklevel/ui/TestRiskLevelCalculationFragment.kt
- Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt 14 additions, 2 deletions...klevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt
- Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml 0 additions, 7 deletions...c/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml
- Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml 5 additions, 7 deletions...sters/res/layout/fragment_test_risk_level_calculation.xml
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt 8 additions, 18 deletions...c/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/ENFClient.kt 13 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 14 additions, 0 deletions...pp/src/main/java/de/rki/coronawarnapp/nearby/ENFModule.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/InternalExposureNotificationClient.kt 0 additions, 7 deletions...oronawarnapp/nearby/InternalExposureNotificationClient.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/locationless/DefaultScanningSupport.kt 28 additions, 0 deletions...app/nearby/modules/locationless/DefaultScanningSupport.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/locationless/ScanningSupport.kt 7 additions, 0 deletions...onawarnapp/nearby/modules/locationless/ScanningSupport.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tracing/DefaultTracingStatus.kt 59 additions, 0 deletions...onawarnapp/nearby/modules/tracing/DefaultTracingStatus.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tracing/TracingStatus.kt 7 additions, 0 deletions...rki/coronawarnapp/nearby/modules/tracing/TracingStatus.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/ExposureSummaryRepository.kt 13 additions, 10 deletions...de/rki/coronawarnapp/storage/ExposureSummaryRepository.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt 26 additions, 32 deletions...p/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/RiskLevelRepository.kt 14 additions, 13 deletions.../java/de/rki/coronawarnapp/storage/RiskLevelRepository.kt
- Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/SettingsRepository.kt 23 additions, 77 deletions...n/java/de/rki/coronawarnapp/storage/SettingsRepository.kt
Loading
Please register or sign in to comment