From ca2409ef91053b70fe46708715b0b8bbb79af9b6 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:50:52 -0500 Subject: [PATCH] fix: fav workaround for broken anilist api --- .../dantotsu/connections/anilist/AnilistQueries.kt | 11 +++++++++++ .../ani/dantotsu/media/CharacterDetailsActivity.kt | 14 +++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt index a779c2e1..c9ff694d 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1426,6 +1426,17 @@ Page(page:$page,perPage:50) { ) } + suspend fun isUserFav(favType: AnilistMutations.FavType, id: Int): Boolean { //anilist isFavourite is broken, so we need to check it manually + val res = getUserProfile(Anilist.userid?: return false) + return when (favType) { + AnilistMutations.FavType.ANIME -> res?.data?.user?.favourites?.anime?.nodes?.any { it.id == id } ?: false + AnilistMutations.FavType.MANGA -> res?.data?.user?.favourites?.manga?.nodes?.any { it.id == id } ?: false + AnilistMutations.FavType.CHARACTER -> res?.data?.user?.favourites?.characters?.nodes?.any { it.id == id } ?: false + AnilistMutations.FavType.STAFF -> res?.data?.user?.favourites?.staff?.nodes?.any { it.id == id } ?: false + AnilistMutations.FavType.STUDIO -> res?.data?.user?.favourites?.studios?.nodes?.any { it.id == id } ?: false + } + } + companion object { const val ITEMS_PER_PAGE = 25 } diff --git a/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt index 3a5f9180..4778f708 100644 --- a/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt @@ -34,6 +34,7 @@ import ani.dantotsu.themes.ThemeManager import com.google.android.material.appbar.AppBarLayout import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlin.math.abs class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListener { @@ -91,9 +92,16 @@ class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChang openLinkInBrowser(link) true } - binding.characterFav.setImageResource( - if (character.isFav) R.drawable.ic_round_favorite_24 else R.drawable.ic_round_favorite_border_24 - ) + lifecycleScope.launch { + withContext(Dispatchers.IO) { + character.isFav = Anilist.query.isUserFav(AnilistMutations.FavType.CHARACTER, character.id) + } + withContext(Dispatchers.Main) { + binding.characterFav.setImageResource( + if (character.isFav) R.drawable.ic_round_favorite_24 else R.drawable.ic_round_favorite_border_24 + ) + } + } binding.characterFav.setOnClickListener { lifecycleScope.launch { if (Anilist.mutation.toggleFav(AnilistMutations.FavType.CHARACTER, character.id)) {