paging: Merge and rename methods
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -15,7 +15,7 @@ import kotlinx.coroutines.withContext
|
||||
/**
|
||||
* A generic paging source that is supposed to be able to load any type of data
|
||||
*
|
||||
* Consider calling [createPager] method to create an instance of [Pager] instead of interacting
|
||||
* Consider calling [pager] method to create an instance of [Pager] instead of interacting
|
||||
* with the class directly.
|
||||
* @param block Data to load into the pager
|
||||
*/
|
||||
@@ -27,12 +27,28 @@ class GenericPagingSource<T : Any>(
|
||||
private const val DEFAULT_PAGE_SIZE = 20
|
||||
|
||||
/**
|
||||
* Method to dynamically create and manage pager objects
|
||||
* Method to create pager objects using [PagingSource]
|
||||
* @param pageSize Size of the page
|
||||
* @param enablePlaceholders Whether placeholders should be shown
|
||||
* @param data Data to load into the pager
|
||||
* @see manualPager
|
||||
*/
|
||||
fun <T : Any> pager(
|
||||
pageSize: Int = DEFAULT_PAGE_SIZE,
|
||||
enablePlaceholders: Boolean = true,
|
||||
data: () -> PagingSource<Int, T>
|
||||
): Pager<Int, T> = Pager(
|
||||
config = PagingConfig(enablePlaceholders = enablePlaceholders, pageSize = pageSize),
|
||||
pagingSourceFactory = { data() }
|
||||
)
|
||||
|
||||
/**
|
||||
* Method to create and manage pager objects manually
|
||||
* @param pageSize Size of the page
|
||||
* @param enablePlaceholders Whether placeholders should be shown
|
||||
* @param data Data to load into the pager
|
||||
*/
|
||||
fun <T : Any> createPager(
|
||||
fun <T : Any> manualPager(
|
||||
pageSize: Int = DEFAULT_PAGE_SIZE,
|
||||
enablePlaceholders: Boolean = true,
|
||||
data: suspend (Int) -> List<T>
|
||||
|
||||
@@ -12,7 +12,7 @@ import androidx.paging.PagingData
|
||||
import androidx.paging.cachedIn
|
||||
import com.aurora.gplayapi.data.models.Review
|
||||
import com.aurora.gplayapi.helpers.ReviewsHelper
|
||||
import com.aurora.store.data.paging.GenericPagingSource
|
||||
import com.aurora.store.data.paging.GenericPagingSource.Companion.manualPager
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
@@ -46,7 +46,7 @@ class ReviewViewModel @AssistedInject constructor(
|
||||
fun fetchReviews(filter: Review.Filter = Review.Filter.ALL) {
|
||||
var reviewsNextPageUrl: String? = null
|
||||
|
||||
GenericPagingSource.Companion.createPager { page ->
|
||||
manualPager { page ->
|
||||
try {
|
||||
when (page) {
|
||||
1 -> reviewsHelper.getReviews(packageName, filter).also {
|
||||
|
||||
@@ -10,12 +10,11 @@ import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.PagingConfig
|
||||
import androidx.paging.PagingData
|
||||
import androidx.paging.cachedIn
|
||||
import com.aurora.store.data.helper.DownloadHelper
|
||||
import com.aurora.store.data.installer.AppInstaller
|
||||
import com.aurora.store.data.paging.GenericPagingSource.Companion.pager
|
||||
import com.aurora.store.data.room.download.Download
|
||||
import com.aurora.store.data.work.ExportWorker
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -88,13 +87,8 @@ class DownloadsViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
private fun getPagedDownloads() {
|
||||
Pager(
|
||||
config = PagingConfig(
|
||||
pageSize = 20,
|
||||
enablePlaceholders = true
|
||||
),
|
||||
pagingSourceFactory = { downloadHelper.pagedDownloads }
|
||||
).flow.distinctUntilChanged()
|
||||
pager { downloadHelper.pagedDownloads }.flow
|
||||
.distinctUntilChanged()
|
||||
.cachedIn(viewModelScope)
|
||||
.onEach { _downloads.value = it }
|
||||
.launchIn(viewModelScope)
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.aurora.gplayapi.helpers.SearchHelper
|
||||
import com.aurora.gplayapi.helpers.contracts.SearchContract
|
||||
import com.aurora.gplayapi.helpers.web.WebSearchHelper
|
||||
import com.aurora.store.data.model.SearchFilter
|
||||
import com.aurora.store.data.paging.GenericPagingSource.Companion.createPager
|
||||
import com.aurora.store.data.paging.GenericPagingSource.Companion.manualPager
|
||||
import com.aurora.store.data.providers.AuthProvider
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -82,7 +82,7 @@ class SearchViewModel @Inject constructor(
|
||||
}.distinctBy { app -> app.packageName }
|
||||
}
|
||||
|
||||
createPager { page ->
|
||||
manualPager { page ->
|
||||
try {
|
||||
when (page) {
|
||||
1 -> contract.searchResults(query)
|
||||
|
||||
Reference in New Issue
Block a user