Skip to content
Snippets Groups Projects
  • Matthias Urhahn's avatar
    cec56fdb
    Refactor missused ViewModels, support automated UI tests and screenshots (EXPOSUREAPP-2946) (#1415) · cec56fdb
    Matthias Urhahn authored
    
    * 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: default avatarralfgehrer <mail@ralfgehrer.com>
    Refactor missused ViewModels, support automated UI tests and screenshots (EXPOSUREAPP-2946) (#1415)
    Matthias Urhahn authored
    
    * 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: default avatarralfgehrer <mail@ralfgehrer.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.