(cherry picked from commit e36e9d9d5c1b2a7b55f28f2bf0ef064880cbac8f) # Conflicts: # app/src/main/java/eu/kanade/domain/manga/interactor/UpdateManga.kt # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/source/Source.kt # app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt # app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
45 lines
1.2 KiB
Kotlin
45 lines
1.2 KiB
Kotlin
package eu.kanade.tachiyomi.source
|
|
|
|
import eu.kanade.tachiyomi.network.ProgressListener
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
import kotlinx.serialization.Serializable
|
|
import kotlinx.serialization.Transient
|
|
import okhttp3.CacheControl
|
|
import okhttp3.Response
|
|
|
|
interface PagePreviewSource : Source {
|
|
|
|
suspend fun getPagePreviewList(manga: SManga, page: Int): PagePreviewPage
|
|
|
|
suspend fun fetchPreviewImage(page: PagePreviewInfo, cacheControl: CacheControl? = null): Response
|
|
}
|
|
|
|
@Serializable
|
|
data class PagePreviewPage(
|
|
val page: Int,
|
|
val pagePreviews: List<PagePreviewInfo>,
|
|
val hasNextPage: Boolean,
|
|
val pagePreviewPages: Int?,
|
|
)
|
|
|
|
@Serializable
|
|
data class PagePreviewInfo(
|
|
val index: Int,
|
|
val imageUrl: String,
|
|
@Transient
|
|
private val _progress: MutableStateFlow<Int> = MutableStateFlow(-1),
|
|
) : ProgressListener {
|
|
@Transient
|
|
val progress = _progress.asStateFlow()
|
|
|
|
override fun update(bytesRead: Long, contentLength: Long, done: Boolean) {
|
|
_progress.value = if (contentLength > 0) {
|
|
(100 * bytesRead / contentLength).toInt()
|
|
} else {
|
|
-1
|
|
}
|
|
}
|
|
}
|