Explorar o código

Fix some crashes

arkon hai 1 ano
pai
achega
46efd4c134

+ 3 - 3
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) },
                                 ),
                             ),
                         )

+ 19 - 12
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
+        }
     }
 
     /**

+ 1 - 2
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)

+ 0 - 1
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