diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/FavoritesParser.kt b/app/src/main/java/com/hippo/ehviewer/client/parser/FavoritesParser.kt
index 0ac3aecb9..48151fc03 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/FavoritesParser.kt
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/FavoritesParser.kt
@@ -1,18 +1,19 @@
package com.hippo.ehviewer.client.parser
-import com.hippo.ehviewer.R
-import com.hippo.ehviewer.client.exception.EhException
+import com.hippo.ehviewer.client.exception.NotLoggedInException
import com.hippo.ehviewer.client.exception.ParseException
-import splitties.init.appCtx
object FavoritesParser {
suspend fun parse(body: String): Result {
if (body.contains("This page requires you to log on.
")) {
- throw EhException(appCtx.getString(R.string.need_sign_in))
+ throw NotLoggedInException()
}
val catArray = arrayOfNulls(10)
- val countArray = parseFav(body, catArray)
- if (countArray.isEmpty()) throw ParseException("Parse favorites error")
+ val countArray = runCatching {
+ parseFav(body, catArray).also { check(it.isNotEmpty()) }
+ }.getOrElse {
+ throw ParseException("Parse favorites error", it)
+ }
val result = GalleryListParser.parse(body)
return Result(catArray.requireNoNulls(), countArray, result)
}
diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/HomeParser.kt b/app/src/main/java/com/hippo/ehviewer/client/parser/HomeParser.kt
index d4b70e580..6c0a9f5f3 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/HomeParser.kt
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/HomeParser.kt
@@ -10,7 +10,9 @@ object HomeParser {
private val PATTERN_FUNDS = Regex("Available: ([\\d,]+) Credits.*Available: ([\\d,]+) kGP", RegexOption.DOT_MATCHES_ALL)
private const val INSUFFICIENT_FUNDS = "Insufficient funds."
- fun parse(body: ByteBuffer) = parseLimit(body)
+ fun parse(body: ByteBuffer) = runCatching {
+ parseLimit(body)
+ }.getOrElse { throw ParseException("Parse image limits error", it) }
fun parseResetLimits(body: String) {
if (body.contains(INSUFFICIENT_FUNDS)) {