未验证 提交 79e64a6b 编写于 作者: D Dustin Lam 提交者: GitHub

Merge pull request #1030 from dlam/dlam/update-paging

Cleanup + bump paging to 3.1.0-beta01
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -136,7 +136,7 @@ class RedditActivity : AppCompatActivity() {
private fun updatedSubredditFromInput() {
binding.input.text.trim().toString().let {
if (it.isNotBlank() && model.shouldShowSubreddit(it)) {
if (it.isNotBlank()) {
model.showSubreddit(it)
}
}
......
......@@ -20,14 +20,10 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asFlow
import androidx.lifecycle.viewModelScope
import androidx.paging.PagingData
import androidx.paging.cachedIn
import com.android.example.paging.pagingwithnetwork.reddit.repository.RedditPostRepository
import com.android.example.paging.pagingwithnetwork.reddit.vo.RedditPost
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.flatMapLatest
class SubRedditViewModel(
private val repository: RedditPostRepository,
......@@ -44,28 +40,20 @@ class SubRedditViewModel(
}
}
private val clearListCh = Channel<Unit>(Channel.CONFLATED)
@OptIn(ExperimentalCoroutinesApi::class, FlowPreview::class)
val posts = flowOf(
clearListCh.receiveAsFlow().map { PagingData.empty<RedditPost>() },
savedStateHandle.getLiveData<String>(KEY_SUBREDDIT)
.asFlow()
.flatMapLatest { repository.postsOfSubreddit(it, 30) }
// cachedIn() shares the paging state across multiple consumers of posts,
// e.g. different generations of UI across rotation config change
.cachedIn(viewModelScope)
).flattenMerge(2)
fun shouldShowSubreddit(
subreddit: String
) = savedStateHandle.get<String>(KEY_SUBREDDIT) != subreddit
@OptIn(ExperimentalCoroutinesApi::class)
val posts = savedStateHandle.getLiveData<String>(KEY_SUBREDDIT)
.asFlow()
.flatMapLatest { repository.postsOfSubreddit(it, 30) }
// cachedIn() shares the paging state across multiple consumers of posts,
// e.g. different generations of UI across rotation config change
.cachedIn(viewModelScope)
fun showSubreddit(subreddit: String) {
if (!shouldShowSubreddit(subreddit)) return
clearListCh.offer(Unit)
savedStateHandle.set(KEY_SUBREDDIT, subreddit)
}
private fun shouldShowSubreddit(subreddit: String): Boolean {
return savedStateHandle.get<String>(KEY_SUBREDDIT) != subreddit
}
}
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
......@@ -52,7 +52,7 @@ versions.mockito_android = "2.25.0"
versions.mockwebserver = "3.8.1"
versions.navigation = "2.3.0-alpha01"
versions.okhttp_logging_interceptor = "3.9.0"
versions.paging = "3.1.0-alpha04"
versions.paging = "3.1.0-beta01"
versions.recyclerview = "1.2.0-beta01"
versions.retrofit = "2.9.0"
versions.robolectric = "4.2"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册