From a4ab7f11e22eb70657e7ed21a9f39e0895120c02 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sun, 8 Dec 2024 06:47:02 +0700 Subject: [PATCH] fix(reader): Prevent potential NPE --- .../ui/reader/viewer/pager/PagerPageHolder.kt | 51 +++++++++---------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index e2d17dec75..e6fce6720f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -301,34 +301,31 @@ class PagerPageHolder( private fun SubsamplingScaleImageView.landscapeZoom(forward: Boolean?) { forward ?: return if (viewer.config.landscapeZoom && viewer.config.imageScaleType == SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE && sWidth > sHeight && scale == minScale) { - handler.postDelayed( - { - val point = when (viewer.config.imageZoomType) { - ZoomType.Left -> if (forward) PointF(0F, 0F) else PointF(sWidth.toFloat(), 0F) - ZoomType.Right -> if (forward) PointF(sWidth.toFloat(), 0F) else PointF(0F, 0F) - ZoomType.Center -> center.also { it?.y = 0F } - } + handler.postDelayed(500) { + val point = when (viewer.config.imageZoomType) { + ZoomType.Left -> if (forward) PointF(0F, 0F) else PointF(sWidth.toFloat(), 0F) + ZoomType.Right -> if (forward) PointF(sWidth.toFloat(), 0F) else PointF(0F, 0F) + ZoomType.Center -> center.also { it?.y = 0F } + } - val rootInsets = viewer.activity.window.decorView.rootWindowInsets - val topInsets = if (viewer.activity.isSplitScreen) { - 0f - } else { - rootInsets?.topCutoutInset()?.toFloat() ?: 0f - } - val bottomInsets = if (viewer.activity.isSplitScreen) { - 0f - } else { - rootInsets?.bottomCutoutInset()?.toFloat() ?: 0f - } - val targetScale = (height.toFloat() - topInsets - bottomInsets) / sHeight.toFloat() - animateScaleAndCenter(min(targetScale, minScale * 2), point)!! - .withDuration(500) - .withEasing(SubsamplingScaleImageView.EASE_IN_OUT_QUAD) - .withInterruptible(true) - .start() - }, - 500, - ) + val rootInsets = viewer.activity.window.decorView.rootWindowInsets + val topInsets = if (viewer.activity.isSplitScreen) { + 0f + } else { + rootInsets?.topCutoutInset()?.toFloat() ?: 0f + } + val bottomInsets = if (viewer.activity.isSplitScreen) { + 0f + } else { + rootInsets?.bottomCutoutInset()?.toFloat() ?: 0f + } + val targetScale = (height.toFloat() - topInsets - bottomInsets) / sHeight.toFloat() + (animateScaleAndCenter(min(targetScale, minScale * 2), point) ?: return@postDelayed) + .withDuration(500) + .withEasing(SubsamplingScaleImageView.EASE_IN_OUT_QUAD) + .withInterruptible(true) + .start() + } } }