Fix some crashes

(cherry picked from commit 46efd4c13430881d8593d4fc3cb899dfd3deacdd)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/webview/WebViewScreenContent.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
This commit is contained in:
arkon 2023-05-27 09:53:01 -04:00 committed by Jobobby04
parent 491cfafddb
commit 88d4087642
4 changed files with 30 additions and 24 deletions

View File

@ -81,15 +81,15 @@ fun WebViewScreenContent(
), ),
AppBar.OverflowAction( AppBar.OverflowAction(
title = stringResource(R.string.action_share), title = stringResource(R.string.action_share),
onClick = { onShare(state.lastLoadedUrl ?: return@OverflowAction) }, onClick = { onShare(state.lastLoadedUrl ?: url) },
), ),
AppBar.OverflowAction( AppBar.OverflowAction(
title = stringResource(R.string.action_open_in_browser), title = stringResource(R.string.action_open_in_browser),
onClick = { onOpenInBrowser(state.lastLoadedUrl ?: return@OverflowAction) }, onClick = { onOpenInBrowser(state.lastLoadedUrl ?: url) },
), ),
AppBar.OverflowAction( AppBar.OverflowAction(
title = stringResource(R.string.pref_clear_cookies), title = stringResource(R.string.pref_clear_cookies),
onClick = { onClearCookies(state.lastLoadedUrl ?: return@OverflowAction) }, onClick = { onClearCookies(state.lastLoadedUrl ?: url) },
), ),
), ),
) )

View File

@ -25,10 +25,12 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
import logcat.LogPriority
import tachiyomi.core.util.lang.launchIO import tachiyomi.core.util.lang.launchIO
import tachiyomi.core.util.lang.withIOContext import tachiyomi.core.util.lang.withIOContext
import tachiyomi.core.util.lang.withUIContext import tachiyomi.core.util.lang.withUIContext
import tachiyomi.core.util.system.ImageUtil import tachiyomi.core.util.system.ImageUtil
import tachiyomi.core.util.system.logcat
import java.io.BufferedInputStream import java.io.BufferedInputStream
import java.io.InputStream import java.io.InputStream
@ -246,25 +248,31 @@ class WebtoonPageHolder(
} }
private fun onStripSplit(imageStream: BufferedInputStream): InputStream { private fun onStripSplit(imageStream: BufferedInputStream): InputStream {
// If we have reached this point [page] and its stream shouldn't be null
val page = page!! try {
val stream = page.stream!! // If we have reached this point [page] and its stream shouldn't be null
val splitData = ImageUtil.getSplitDataForStream( val page = page!!
imageStream, val stream = page.stream!!
// SY --> val splitData = ImageUtil.getSplitDataForStream(
page.zip4jFile, imageStream,
page.zip4jEntry, // SY -->
// SY <-- page.zip4jFile,
).toMutableList() page.zip4jEntry,
val currentSplitData = splitData.removeFirst() // SY <--
val newPages = splitData.map { ).toMutableList()
StencilPage(page) { ImageUtil.splitStrip(it, stream) } val currentSplitData = splitData.removeFirst()
} val newPages = splitData.map {
return ImageUtil.splitStrip(currentSplitData) { imageStream } StencilPage(page) { ImageUtil.splitStrip(it, stream) }
.also {
// Running [onLongStripSplit] first results in issues with splitting
viewer.onLongStripSplit(page, newPages)
} }
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
}
} }
/** /**

View File

@ -403,9 +403,8 @@ object ImageUtil {
"splitHeight=${splitData.splitHeight} bottomOffset=${splitData.bottomOffset}" "splitHeight=${splitData.splitHeight} bottomOffset=${splitData.bottomOffset}"
} }
val region = Rect(0, splitData.topOffset, splitData.splitWidth, splitData.bottomOffset)
try { try {
val region = Rect(0, splitData.topOffset, splitData.splitWidth, splitData.bottomOffset)
val splitBitmap = bitmapRegionDecoder.decodeRegion(region, null) val splitBitmap = bitmapRegionDecoder.decodeRegion(region, null)
val outputStream = ByteArrayOutputStream() val outputStream = ByteArrayOutputStream()
splitBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream) splitBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream)

View File

@ -5,7 +5,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue