mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +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