mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Don't update page progress and allow preload when on StencilPage (#7899)
Also cleanup a little in WebtoonPageHolder
This commit is contained in:
		@@ -39,6 +39,7 @@ import eu.kanade.tachiyomi.ui.reader.loader.HttpPageLoader
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.model.StencilPage
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
 | 
			
		||||
@@ -414,8 +415,8 @@ class ReaderPresenter(
 | 
			
		||||
 | 
			
		||||
        val selectedChapter = page.chapter
 | 
			
		||||
 | 
			
		||||
        // Insert page doesn't change page progress
 | 
			
		||||
        if (page is InsertPage) {
 | 
			
		||||
        // InsertPage and StencilPage doesn't change page progress
 | 
			
		||||
        if (page is InsertPage || page is StencilPage) {
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -246,30 +246,28 @@ class WebtoonPageHolder(
 | 
			
		||||
        unsubscribeReadImageHeader()
 | 
			
		||||
        val streamFn = page?.stream ?: return
 | 
			
		||||
 | 
			
		||||
        var openStream: InputStream? = null
 | 
			
		||||
        readImageHeaderSubscription = Observable
 | 
			
		||||
            .fromCallable {
 | 
			
		||||
                val stream = streamFn().buffered(16)
 | 
			
		||||
                openStream = process(stream)
 | 
			
		||||
 | 
			
		||||
                ImageUtil.isAnimatedAndSupported(stream)
 | 
			
		||||
                val imageStream = process(stream)
 | 
			
		||||
                val isAnimated = ImageUtil.isAnimatedAndSupported(stream)
 | 
			
		||||
                Pair(imageStream, isAnimated)
 | 
			
		||||
            }
 | 
			
		||||
            .subscribeOn(Schedulers.io())
 | 
			
		||||
            .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
            .doOnNext { isAnimated ->
 | 
			
		||||
                frame.setImage(
 | 
			
		||||
                    openStream!!,
 | 
			
		||||
                    isAnimated,
 | 
			
		||||
                    ReaderPageImageView.Config(
 | 
			
		||||
                        zoomDuration = viewer.config.doubleTapAnimDuration,
 | 
			
		||||
                        minimumScaleType = SubsamplingScaleImageView.SCALE_TYPE_FIT_WIDTH,
 | 
			
		||||
                        cropBorders = viewer.config.imageCropBorders,
 | 
			
		||||
                    ),
 | 
			
		||||
                )
 | 
			
		||||
            .doOnNext { (imageStream, isAnimated) ->
 | 
			
		||||
                imageStream.use {
 | 
			
		||||
                    frame.setImage(
 | 
			
		||||
                        it,
 | 
			
		||||
                        isAnimated,
 | 
			
		||||
                        ReaderPageImageView.Config(
 | 
			
		||||
                            zoomDuration = viewer.config.doubleTapAnimDuration,
 | 
			
		||||
                            minimumScaleType = SubsamplingScaleImageView.SCALE_TYPE_FIT_WIDTH,
 | 
			
		||||
                            cropBorders = viewer.config.imageCropBorders,
 | 
			
		||||
                        ),
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // Keep the Rx stream alive to close the input stream only when unsubscribed
 | 
			
		||||
            .flatMap { Observable.never<Unit>() }
 | 
			
		||||
            .doOnUnsubscribe { openStream?.close() }
 | 
			
		||||
            .subscribe({}, {})
 | 
			
		||||
 | 
			
		||||
        addSubscription(readImageHeaderSubscription)
 | 
			
		||||
 
 | 
			
		||||
@@ -210,6 +210,11 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
 | 
			
		||||
        logcat { "onPageSelected: ${page.number}/${pages.size}" }
 | 
			
		||||
        activity.onPageSelected(page)
 | 
			
		||||
 | 
			
		||||
        // Skip preload on StencilPage
 | 
			
		||||
        if (page is StencilPage) {
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Preload next chapter once we're within the last 5 pages of the current chapter
 | 
			
		||||
        val inPreloadRange = pages.size - page.number < 5
 | 
			
		||||
        if (inPreloadRange && allowPreload && page.chapter == adapter.currentChapter) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user