diff --git a/app/src/main/java/com/aurora/store/data/paging/GenericPagingSource.kt b/app/src/main/java/com/aurora/store/data/paging/GenericPagingSource.kt index 9b170d274..42cf27838 100644 --- a/app/src/main/java/com/aurora/store/data/paging/GenericPagingSource.kt +++ b/app/src/main/java/com/aurora/store/data/paging/GenericPagingSource.kt @@ -8,6 +8,7 @@ package com.aurora.store.data.paging import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingSource +import androidx.paging.PagingSource.LoadResult.Page.Companion.COUNT_UNDEFINED import androidx.paging.PagingState import com.aurora.store.data.paging.GenericPagingSource.Companion.manualPager import com.aurora.store.data.paging.GenericPagingSource.Companion.pager @@ -65,12 +66,11 @@ class GenericPagingSource( return try { withContext(Dispatchers.IO) { val data = block(page) - val totalPages = if (data.isNotEmpty()) page + 1 else page LoadResult.Page( data = data, prevKey = if (page == 1) null else page - 1, - nextKey = if (page == totalPages) null else totalPages, - itemsAfter = if (page == totalPages) 0 else DEFAULT_PAGE_SIZE + nextKey = if (data.isEmpty()) null else page + 1, + itemsAfter = if (data.isEmpty()) 0 else COUNT_UNDEFINED ) } } catch (exception: Exception) { diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt index da3ab3f3d..0a0f7493f 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt @@ -64,9 +64,9 @@ class InstalledViewModel @Inject constructor( manualPager { page -> try { - webAppDetailsHelper.getAppDetails( - pagedPackages[page].map { it.packageName } - ) + // page is 1-indexed, but list is 0-indexed + val chunk = pagedPackages.getOrNull(page - 1) ?: return@manualPager emptyList() + webAppDetailsHelper.getAppDetails(chunk.map { it.packageName }) } catch (exception: Exception) { Log.e(TAG, "Failed to fetch apps", exception) emptyList()