I was implementing pagination with concatadapter, first adapter content, second is the loading progess while paginating. From the paging codelab https://github.com/android/codelab-android-paging/pull/46/files#diff-27062d7e2623b9c23539c4686febbc6d37ac66c7b388612fde38b2bdca5bc87f
When I use LiveData my retry option works
private val _repoLoadStatus = MutableLiveData<LoadState>()
val repoLoadStatus: LiveData<LoadState>
get() = _repoLoadStatus.distinctUntilChanged()
While trying with flow nothing happens. Basically just stuck on this screen without refreshing data.
private val _homeFeedResponse = MutableStateFlow<State>(State.Empty)
val homeFeedResponse = _homeFeedResponse.asStateFlow()
This is the VM function
fun getHomeFeed(
page: String,
size: String
) = viewModelScope.launch {
_homeFeedResponse.value = State.Loading
when (val response = homeFeedRepository.getHomeFeed(page, size)) {
is ResultWrapper.GenericError -> {
_homeFeedResponse.value = State.Failed("${response.code} ${response.error}")
}
ResultWrapper.NetworkError -> {
_homeFeedResponse.value = State.Failed("Network Error")
}
is ResultWrapper.Success -> {
lastPageReached = response.value.next == null
if (response.value.next != null) pageNumber += 1
if (_homeFeedUiState.value.homeFeedPosts.isNotEmpty() && page == "1") {
_homeFeedUiState.update {
it.copy(homeFeedPosts = response.value.homeFeedPosts)
}
} else {
_homeFeedUiState.update {
it.copy(homeFeedPosts = it.homeFeedPosts + response.value.homeFeedPosts)
}
}
_homeFeedResponse.value = State.Success(response.value)
}
}
}