From 46efd4c13430881d8593d4fc3cb899dfd3deacdd Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 27 May 2023 09:53:01 -0400 Subject: [PATCH] Fix some crashes --- .../webview/WebViewScreenContent.kt | 6 ++-- .../viewer/webtoon/WebtoonPageHolder.kt | 31 ++++++++++++------- .../tachiyomi/core/util/system/ImageUtil.kt | 3 +- .../presentation/core/util/LazyListState.kt | 1 - 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt index 5b607b8a2c..1c7923b033 100644 --- a/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt +++ b/app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt @@ -81,15 +81,15 @@ fun WebViewScreenContent( ), AppBar.OverflowAction( title = stringResource(R.string.action_share), - onClick = { onShare(state.lastLoadedUrl!!) }, + onClick = { onShare(state.lastLoadedUrl ?: url) }, ), AppBar.OverflowAction( title = stringResource(R.string.action_open_in_browser), - onClick = { onOpenInBrowser(state.lastLoadedUrl!!) }, + onClick = { onOpenInBrowser(state.lastLoadedUrl ?: url) }, ), AppBar.OverflowAction( title = stringResource(R.string.pref_clear_cookies), - onClick = { onClearCookies(state.lastLoadedUrl!!) }, + onClick = { onClearCookies(state.lastLoadedUrl ?: url) }, ), ), ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt index 6ee030ce96..d29c2497ba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt @@ -25,10 +25,12 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.suspendCancellableCoroutine +import logcat.LogPriority import tachiyomi.core.util.lang.launchIO import tachiyomi.core.util.lang.withIOContext import tachiyomi.core.util.lang.withUIContext import tachiyomi.core.util.system.ImageUtil +import tachiyomi.core.util.system.logcat import java.io.BufferedInputStream import java.io.InputStream @@ -234,19 +236,24 @@ class WebtoonPageHolder( } private fun onStripSplit(imageStream: BufferedInputStream): InputStream { - // If we have reached this point [page] and its stream shouldn't be null - val page = page!! - val stream = page.stream!! - val splitData = ImageUtil.getSplitDataForStream(imageStream).toMutableList() - val currentSplitData = splitData.removeFirst() - val newPages = splitData.map { - StencilPage(page) { ImageUtil.splitStrip(it, stream) } - } - return ImageUtil.splitStrip(currentSplitData) { imageStream } - .also { - // Running [onLongStripSplit] first results in issues with splitting - viewer.onLongStripSplit(page, newPages) + try { + // If we have reached this point [page] and its stream shouldn't be null + val page = page!! + val stream = page.stream!! + val splitData = ImageUtil.getSplitDataForStream(imageStream).toMutableList() + val currentSplitData = splitData.removeFirst() + val newPages = splitData.map { + StencilPage(page) { ImageUtil.splitStrip(it, stream) } } + return ImageUtil.splitStrip(currentSplitData) { imageStream } + .also { + // Running [onLongStripSplit] first results in issues with splitting + viewer.onLongStripSplit(page, newPages) + } + } catch (e: Exception) { + logcat(LogPriority.ERROR, e) { "Failed to split image" } + return imageStream + } } /** diff --git a/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt b/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt index 5f29c7d853..911673fd2c 100644 --- a/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt +++ b/core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt @@ -298,9 +298,8 @@ object ImageUtil { "splitHeight=${splitData.splitHeight} bottomOffset=${splitData.bottomOffset}" } - val region = Rect(0, splitData.topOffset, splitData.splitWidth, splitData.bottomOffset) - try { + val region = Rect(0, splitData.topOffset, splitData.splitWidth, splitData.bottomOffset) val splitBitmap = bitmapRegionDecoder.decodeRegion(region, null) val outputStream = ByteArrayOutputStream() splitBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream) diff --git a/presentation-core/src/main/java/tachiyomi/presentation/core/util/LazyListState.kt b/presentation-core/src/main/java/tachiyomi/presentation/core/util/LazyListState.kt index 1b2aa1ab83..1abb3205ac 100644 --- a/presentation-core/src/main/java/tachiyomi/presentation/core/util/LazyListState.kt +++ b/presentation-core/src/main/java/tachiyomi/presentation/core/util/LazyListState.kt @@ -5,7 +5,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue