You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Anyways, I found this error (sort of) in the MainViewModel fetchUser(). The problem here is fetchUser() is already called from a different CoroutineScope. So instead of launching a new viewModelScope, we can reuse the previous one. So the PR request I raised removes the viewModelScope.launch {} and instead makes the fetchUser() suspend.
@captswag scope here is only one - viewModelScope, but within this scope several coroutines are launched. Each viewModelScope.launch launches a new coroutine within the same scope.
So in the code we have one coroutine, which is created to listen to new intents and it basically has the same lifecycle as ViewModel.
Then, inside this coroutine, a child coroutine is created to fetch users, which 'lives' only for a duration of this intent.
I would not say your proposal is not correct, but it's not a bug you're fixing, but rather introduction of different behavior.
In original code, new intent can be accepted while previous is still ongoing. This is because for 'users fetching' intent there is a new coroutine created, which can be suspended, while the parent coroutine continue operating and can accept new intents.
In your proposal, no new intent can be accepted until previous one is completed. This is because all work is done within single coroutine.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I was going through this blog article https://blog.mindorks.com/mvi-architecture-android-tutorial-for-beginners-step-by-step-guide and downloaded this repo to learn more about MVI.
Anyways, I found this error (sort of) in the MainViewModel fetchUser(). The problem here is fetchUser() is already called from a different CoroutineScope. So instead of launching a new viewModelScope, we can reuse the previous one. So the PR request I raised removes the viewModelScope.launch {} and instead makes the fetchUser() suspend.