From 4bf0c4ececf92bcbf8cf829a2b59ba6fe0c0cdbb Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:25:52 +0800 Subject: [PATCH] Minimize unnecessary network requests --- .../hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt index 1f87d5749..b8696b975 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryPreviewScreen.kt @@ -70,6 +70,7 @@ fun GalleryPreviewScreen(galleryDetail: GalleryDetail, toNextPageArg: Boolean, n val coroutineScope = rememberCoroutineScope { Dispatchers.IO } val pages = galleryDetail.pages val pgSize = galleryDetail.previewList.size + val thumbColumns by Settings.thumbColumns.collectAsState() var toNextPage by rememberSaveable { mutableStateOf(toNextPageArg) } LaunchedEffect(Unit) { @@ -90,7 +91,14 @@ fun GalleryPreviewScreen(galleryDetail: GalleryDetail, toNextPageArg: Boolean, n val data = rememberInVM { val previewPagesMap = galleryDetail.previewList.associateBy { it.position } as MutableMap - Pager(PagingConfig(pageSize = pgSize, initialLoadSize = pgSize, jumpThreshold = 2 * pgSize)) { + Pager( + PagingConfig( + pageSize = pgSize, + prefetchDistance = thumbColumns, + initialLoadSize = pgSize, + jumpThreshold = 2 * pgSize, + ), + ) { object : PagingSource() { override fun getRefreshKey(state: PagingState) = state.getClippedRefreshKey() override suspend fun load(params: LoadParams): LoadResult { @@ -127,7 +135,6 @@ fun GalleryPreviewScreen(galleryDetail: GalleryDetail, toNextPageArg: Boolean, n ) }, ) { paddingValues -> - val thumbColumns by Settings.thumbColumns.collectAsState() FastScrollLazyVerticalGrid( columns = GridCells.Fixed(thumbColumns), modifier = Modifier.nestedScroll(scrollBehaviour.nestedScrollConnection).padding(horizontal = dimensionResource(id = R.dimen.gallery_list_margin_h)),