From d0823ef3f66ce7c077defff373c33edcd5777060 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Mon, 16 Jun 2025 16:49:12 +0700 Subject: [PATCH] fix(anilist): Fix null recommendation node (cherry picked from commit 305f8db0adcf821962a539867b5704fbf229461e) --- .../exh/recs/sources/AniListPagingSource.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/exh/recs/sources/AniListPagingSource.kt b/app/src/main/java/exh/recs/sources/AniListPagingSource.kt index b580e15ef..c9b331041 100644 --- a/app/src/main/java/exh/recs/sources/AniListPagingSource.kt +++ b/app/src/main/java/exh/recs/sources/AniListPagingSource.kt @@ -88,16 +88,22 @@ class AniListPagingSource(manga: Manga) : TrackerRecommendationPagingSource( .ifEmpty { throw NoResultsException() } .filter() - return media.flatMap { it.jsonObject["recommendations"]!!.jsonObject["edges"]!!.jsonArray }.map { - val rec = it.jsonObject["node"]!!.jsonObject["mediaRecommendation"]!!.jsonObject - val recTitle = getTitle(rec) - logcat { "ANILIST > RECOMMENDATION: $recTitle" } - SManga( - title = recTitle, - thumbnail_url = rec["coverImage"]!!.jsonObject["large"]!!.jsonPrimitive.content, - initialized = true, - url = rec["siteUrl"]!!.jsonPrimitive.content, - ) + return media.flatMap { it.jsonObject["recommendations"]!!.jsonObject["edges"]!!.jsonArray }.mapNotNull { edge -> + edge.jsonObject["node"]?.let { node -> + node.jsonObject["mediaRecommendation"]?.takeIf { it is JsonObject }?.let { media -> + val rec = media.jsonObject + val recTitle = getTitle(rec) + logcat { "ANILIST > RECOMMENDATION: $recTitle" } + rec["siteUrl"]?.jsonPrimitive?.contentOrNull?.let { url -> + SManga( + title = recTitle, + thumbnail_url = rec["coverImage"]?.jsonObject?.get("large")?.jsonPrimitive?.contentOrNull, + initialized = true, + url = url, + ) + } + } + } } }