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
|
* 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.
|
* with the class directly.
|
||||||
* @param block Data to load into the pager
|
* @param block Data to load into the pager
|
||||||
*/
|
*/
|
||||||
@@ -27,12 +27,28 @@ class GenericPagingSource<T : Any>(
|
|||||||
private const val DEFAULT_PAGE_SIZE = 20
|
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 pageSize Size of the page
|
||||||
* @param enablePlaceholders Whether placeholders should be shown
|
* @param enablePlaceholders Whether placeholders should be shown
|
||||||
* @param data Data to load into the pager
|
* @param data Data to load into the pager
|
||||||
*/
|
*/
|
||||||
fun <T : Any> createPager(
|
fun <T : Any> manualPager(
|
||||||
pageSize: Int = DEFAULT_PAGE_SIZE,
|
pageSize: Int = DEFAULT_PAGE_SIZE,
|
||||||
enablePlaceholders: Boolean = true,
|
enablePlaceholders: Boolean = true,
|
||||||
data: suspend (Int) -> List<T>
|
data: suspend (Int) -> List<T>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import androidx.paging.PagingData
|
|||||||
import androidx.paging.cachedIn
|
import androidx.paging.cachedIn
|
||||||
import com.aurora.gplayapi.data.models.Review
|
import com.aurora.gplayapi.data.models.Review
|
||||||
import com.aurora.gplayapi.helpers.ReviewsHelper
|
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.Assisted
|
||||||
import dagger.assisted.AssistedFactory
|
import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
@@ -46,7 +46,7 @@ class ReviewViewModel @AssistedInject constructor(
|
|||||||
fun fetchReviews(filter: Review.Filter = Review.Filter.ALL) {
|
fun fetchReviews(filter: Review.Filter = Review.Filter.ALL) {
|
||||||
var reviewsNextPageUrl: String? = null
|
var reviewsNextPageUrl: String? = null
|
||||||
|
|
||||||
GenericPagingSource.Companion.createPager { page ->
|
manualPager { page ->
|
||||||
try {
|
try {
|
||||||
when (page) {
|
when (page) {
|
||||||
1 -> reviewsHelper.getReviews(packageName, filter).also {
|
1 -> reviewsHelper.getReviews(packageName, filter).also {
|
||||||
|
|||||||
@@ -10,12 +10,11 @@ import android.net.Uri
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import androidx.paging.Pager
|
|
||||||
import androidx.paging.PagingConfig
|
|
||||||
import androidx.paging.PagingData
|
import androidx.paging.PagingData
|
||||||
import androidx.paging.cachedIn
|
import androidx.paging.cachedIn
|
||||||
import com.aurora.store.data.helper.DownloadHelper
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.data.installer.AppInstaller
|
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.room.download.Download
|
||||||
import com.aurora.store.data.work.ExportWorker
|
import com.aurora.store.data.work.ExportWorker
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
@@ -88,13 +87,8 @@ class DownloadsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getPagedDownloads() {
|
private fun getPagedDownloads() {
|
||||||
Pager(
|
pager { downloadHelper.pagedDownloads }.flow
|
||||||
config = PagingConfig(
|
.distinctUntilChanged()
|
||||||
pageSize = 20,
|
|
||||||
enablePlaceholders = true
|
|
||||||
),
|
|
||||||
pagingSourceFactory = { downloadHelper.pagedDownloads }
|
|
||||||
).flow.distinctUntilChanged()
|
|
||||||
.cachedIn(viewModelScope)
|
.cachedIn(viewModelScope)
|
||||||
.onEach { _downloads.value = it }
|
.onEach { _downloads.value = it }
|
||||||
.launchIn(viewModelScope)
|
.launchIn(viewModelScope)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import com.aurora.gplayapi.helpers.SearchHelper
|
|||||||
import com.aurora.gplayapi.helpers.contracts.SearchContract
|
import com.aurora.gplayapi.helpers.contracts.SearchContract
|
||||||
import com.aurora.gplayapi.helpers.web.WebSearchHelper
|
import com.aurora.gplayapi.helpers.web.WebSearchHelper
|
||||||
import com.aurora.store.data.model.SearchFilter
|
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 com.aurora.store.data.providers.AuthProvider
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -82,7 +82,7 @@ class SearchViewModel @Inject constructor(
|
|||||||
}.distinctBy { app -> app.packageName }
|
}.distinctBy { app -> app.packageName }
|
||||||
}
|
}
|
||||||
|
|
||||||
createPager { page ->
|
manualPager { page ->
|
||||||
try {
|
try {
|
||||||
when (page) {
|
when (page) {
|
||||||
1 -> contract.searchResults(query)
|
1 -> contract.searchResults(query)
|
||||||
|
|||||||
Reference in New Issue
Block a user