From 0701b8013bf871886ff17c780077e56b16d755e8 Mon Sep 17 00:00:00 2001 From: Dustin Lam Date: Wed, 23 Dec 2020 13:29:10 -0800 Subject: [PATCH] Bump dependencies to match paging alpha11 --- .../codelabs/paging/data/GithubRepository.kt | 18 +++++++----------- .../paging/ui/SearchRepositoriesActivity.kt | 3 --- .../paging/ui/SearchRepositoriesViewModel.kt | 3 --- build.gradle | 6 +++--- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt b/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt index 77000d4f..2a019c12 100644 --- a/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt +++ b/app/src/main/java/com/example/android/codelabs/paging/data/GithubRepository.kt @@ -21,11 +21,8 @@ import com.example.android.codelabs.paging.api.GithubService import com.example.android.codelabs.paging.api.IN_QUALIFIER import com.example.android.codelabs.paging.model.Repo import com.example.android.codelabs.paging.model.RepoSearchResult -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.FlowPreview -import kotlinx.coroutines.channels.ConflatedBroadcastChannel import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.MutableSharedFlow import retrofit2.HttpException import java.io.IOException @@ -35,15 +32,14 @@ private const val GITHUB_STARTING_PAGE_INDEX = 1 /** * Repository class that works with local and remote data sources. */ -@ExperimentalCoroutinesApi class GithubRepository(private val service: GithubService) { // keep the list of all results received private val inMemoryCache = mutableListOf() - // keep channel of results. The channel allows us to broadcast updates so + // shared flow of results, which allows us to broadcast updates so // the subscriber will have the latest data - private val searchResults = ConflatedBroadcastChannel() + private val searchResults = MutableSharedFlow(replay = 1) // keep the last requested page. When the request is successful, increment the page number. private var lastRequestedPage = GITHUB_STARTING_PAGE_INDEX @@ -61,7 +57,7 @@ class GithubRepository(private val service: GithubService) { inMemoryCache.clear() requestAndSaveData(query) - return searchResults.asFlow() + return searchResults } suspend fun requestMore(query: String) { @@ -88,12 +84,12 @@ class GithubRepository(private val service: GithubService) { val repos = response.items ?: emptyList() inMemoryCache.addAll(repos) val reposByName = reposByName(query) - searchResults.offer(RepoSearchResult.Success(reposByName)) + searchResults.emit(RepoSearchResult.Success(reposByName)) successful = true } catch (exception: IOException) { - searchResults.offer(RepoSearchResult.Error(exception)) + searchResults.emit(RepoSearchResult.Error(exception)) } catch (exception: HttpException) { - searchResults.offer(RepoSearchResult.Error(exception)) + searchResults.emit(RepoSearchResult.Error(exception)) } isRequestInProgress = false return successful diff --git a/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesActivity.kt b/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesActivity.kt index 64cad7ae..675b407f 100644 --- a/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesActivity.kt +++ b/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesActivity.kt @@ -23,7 +23,6 @@ import android.view.inputmethod.EditorInfo import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.observe import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -31,9 +30,7 @@ import androidx.recyclerview.widget.RecyclerView.OnScrollListener import com.example.android.codelabs.paging.Injection import com.example.android.codelabs.paging.databinding.ActivitySearchRepositoriesBinding import com.example.android.codelabs.paging.model.RepoSearchResult -import kotlinx.coroutines.ExperimentalCoroutinesApi -@ExperimentalCoroutinesApi class SearchRepositoriesActivity : AppCompatActivity() { private lateinit var binding: ActivitySearchRepositoriesBinding diff --git a/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesViewModel.kt b/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesViewModel.kt index e7748559..c65ca3f4 100644 --- a/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesViewModel.kt +++ b/app/src/main/java/com/example/android/codelabs/paging/ui/SearchRepositoriesViewModel.kt @@ -20,15 +20,12 @@ import androidx.lifecycle.* import com.example.android.codelabs.paging.data.GithubRepository import com.example.android.codelabs.paging.model.RepoSearchResult import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.launch /** * ViewModel for the [SearchRepositoriesActivity] screen. * The ViewModel works with the [GithubRepository] to get the data. */ -@ExperimentalCoroutinesApi class SearchRepositoriesViewModel(private val repository: GithubRepository) : ViewModel() { companion object { diff --git a/build.gradle b/build.gradle index acb3d2ea..63d0c66a 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.10' + ext.kotlin_version = '1.4.21' repositories { google() jcenter() @@ -50,8 +50,8 @@ ext { materialVersion = '1.2.1' lifecycleVersion = '2.2.0' roomVersion = '2.3.0-alpha03' - pagingVersion = '3.0.0-alpha09' + pagingVersion = '3.0.0-alpha11' retrofitVersion = '2.7.2' okhttpLoggingInterceptorVersion = '4.0.0' - coroutines = '1.3.7' + coroutines = '1.4.1' }