提交 cb6140f4 编写于 作者: D Dustin Lam

Cleanup + bump paging to 3.1.0-beta01

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