From 14810b4c2c385e302d30ffa049122382ba1622a8 Mon Sep 17 00:00:00 2001 From: GG Bond Date: Fri, 16 Feb 2024 12:02:40 +0800 Subject: [PATCH] Grab some RestrictedApi to make lint happy --- .../ui/screen/GalleryPreviewScreen.kt | 6 +++--- .../hippo/ehviewer/ui/tools/PagingUtils.kt | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 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 aab780e70..1ba3b962a 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 @@ -35,9 +35,6 @@ import androidx.paging.cachedIn import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemContentType import androidx.paging.compose.itemKey -import androidx.room.paging.util.getClippedRefreshKey -import androidx.room.paging.util.getLimit -import androidx.room.paging.util.getOffset import arrow.fx.coroutines.parMap import coil3.imageLoader import com.hippo.ehviewer.R @@ -54,6 +51,9 @@ import com.hippo.ehviewer.ui.main.EhPreviewItem import com.hippo.ehviewer.ui.navToReader import com.hippo.ehviewer.ui.tools.FastScrollLazyVerticalGrid import com.hippo.ehviewer.ui.tools.foldToLoadResult +import com.hippo.ehviewer.ui.tools.getClippedRefreshKey +import com.hippo.ehviewer.ui.tools.getLimit +import com.hippo.ehviewer.ui.tools.getOffset import com.hippo.ehviewer.ui.tools.rememberInVM import com.ramcosta.composedestinations.annotation.Destination import eu.kanade.tachiyomi.util.lang.withIOContext diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/PagingUtils.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/PagingUtils.kt index 098fccfa5..0a86ff75b 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/PagingUtils.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/PagingUtils.kt @@ -1,6 +1,11 @@ package com.hippo.ehviewer.ui.tools +import androidx.paging.PagingSource.LoadParams +import androidx.paging.PagingSource.LoadParams.Append +import androidx.paging.PagingSource.LoadParams.Prepend +import androidx.paging.PagingSource.LoadParams.Refresh import androidx.paging.PagingSource.LoadResult +import androidx.paging.PagingState inline fun , T> Result.foldToLoadResult( onSuccess: (value: T) -> R, @@ -8,3 +13,19 @@ inline fun , T> Result.foldToLoad onSuccess = onSuccess, onFailure = { LoadResult.Error(it) }, ) + +fun PagingState.getClippedRefreshKey() = when (val anchorPosition = anchorPosition) { + null -> null + else -> maxOf(0, anchorPosition - (config.initialLoadSize / 2)) +} + +fun getOffset(params: LoadParams, key: Int, itemCount: Int) = when (params) { + is Prepend -> if (key < params.loadSize) 0 else key - params.loadSize + is Append -> key + is Refresh -> if (key >= itemCount) maxOf(0, itemCount - params.loadSize) else key +} + +fun getLimit(params: LoadParams, key: Int) = when (params) { + is Prepend -> if (key < params.loadSize) key else params.loadSize + else -> params.loadSize +}