Inline PageLoader user (#2209)

This commit is contained in:
renovate[bot] authored and GitHub committed 2025-03-21 22:03:37 +08:00
1 parent aacde8871e
commit 9b7b411825
3 files changed
+7 -8

No files matched your search

@@ -37,15 +37,14 @@ import okio.Path
typealias PasswdInvalidator = (String) -> Boolean
typealias PasswdProvider = suspend (PasswdInvalidator) -> String
val emptyPasswdProvider: PasswdProvider = { error("Managed Archive have password???") }
suspend fun <T> useArchivePageLoader(
suspend inline fun <T> useArchivePageLoader(
file: Path,
gid: Long = 0,
startPage: Int = 0,
hasAds: Boolean = false,
passwdProvider: PasswdProvider = emptyPasswdProvider,
block: suspend (PageLoader) -> T,
crossinline passwdProvider: PasswdProvider,
crossinline block: suspend (PageLoader) -> T,
) = autoCloseScope {
coroutineScope {
val pfd = install(file.openFileDescriptor("r"))
@@ -12,10 +12,10 @@ import kotlinx.coroutines.coroutineScope
import moe.tarsin.kt.install
import okio.Path
suspend fun <T> useEhPageLoader(
suspend inline fun <T> useEhPageLoader(
info: GalleryInfo,
startPage: Int,
block: suspend (PageLoader) -> T,
crossinline block: suspend (PageLoader) -> T,
) = autoCloseScope {
coroutineScope {
val queen = install(
@@ -375,13 +375,13 @@ fun AnimatedVisibilityScope.ReaderScreen(pageLoader: PageLoader, info: BaseGalle
}
context(Context, DialogState, DestinationsNavigator)
suspend fun <T> usePageLoader(args: ReaderScreenArgs, block: suspend (PageLoader) -> T) = when (args) {
suspend inline fun <T> usePageLoader(args: ReaderScreenArgs, crossinline block: suspend (PageLoader) -> T) = when (args) {
is ReaderScreenArgs.Gallery -> {
val info = args.info
val page = args.page.takeUnless { it == -1 } ?: EhDB.getReadProgress(info.gid)
val archive = DownloadManager.getDownloadInfo(info.gid)?.archiveFile
if (archive != null) {
useArchivePageLoader(archive, info.gid, page, info.hasAds, block = block)
useArchivePageLoader(archive, info.gid, page, info.hasAds, { error("Managed Archive have password???") }, block)
} else {
useEhPageLoader(info, page, block)
}