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)) {