From 1484e0f24bb77aed77d17af8b7ba6574f0c9cc86 Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Wed, 6 May 2026 03:15:10 +0530 Subject: [PATCH] pager: do not skip first batch of packages + fix indexoutofbound exception --- .../com/aurora/store/data/paging/GenericPagingSource.kt | 6 +++--- .../com/aurora/store/viewmodel/all/InstalledViewModel.kt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) 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()