Tusky-App-Android/app
Christophe Beyls d200d1e15e
Prevent parallel loading and fix duplicate ViewModel state collection in FiltersActivity (#4472)
This pull request fixes the following issues:

- `FiltersActivity` launches a new coroutine to collect the ViewModel
state every time the Activity is resumed, without cancelling the
previous coroutine.
- `FiltersActivity` reloads the filters in `onResume()`, even if loading
is already in progress (without cancelling the current loading). This
can lead to inconsistent state.

List of improvements:
- Implement `launchAndRepeatOnLifecycle()` to combine
`coroutineScope.launch()` with `repeatOnLifecycle()` for the same
`Lifecycle`. Use it in `FiltersActivity` to update the view only when
the Activity is visible.
- Optimize the filters loading: load them when `FiltersViewModel` is
created and when returning from `EditFilterActivity` (when receiving the
Activity result). Cancel the load already in progress, if any.
- use `MutableStateFlow.update()` to update the state in a thread-safe
way.
- Turn `FiltersViewModel.deleteFilter()` into a suspending function in
order to perform the update in the coroutinescope of the Activity
lifecycle, so the View passed as argument doesn't leak.
- Wait for an ongoing load operation to complete before performing a
delete filter operation, so the state stays consistent.
- Add `Intent.withSlideInAnimation()` as a simpler and more flexible
alternative to `Activity.startActivityWithSlideInAnimation(Intent)`.
2024-05-31 13:42:21 +02:00
..
schemas/com.keylesspalace.tusky.db.AppDatabase Refactor notifications to Kotlin & paging (#4026) 2024-05-03 18:27:10 +02:00
src Prevent parallel loading and fix duplicate ViewModel state collection in FiltersActivity (#4472) 2024-05-31 13:42:21 +02:00
build.gradle Replace Dagger-Android with Hilt and remove Kapt (#4423) 2024-05-10 15:55:07 +02:00
getGitSha.gradle
lint-baseline.xml Refactor notifications to Kotlin & paging (#4026) 2024-05-03 18:27:10 +02:00
lint.xml Fix some warnings & recreate lint-baseline.xml (#4278) 2024-02-25 16:20:26 +01:00
proguard-rules.pro Replace Gson library with Moshi (#4309) 2024-04-02 21:01:04 +02:00