From 425ca158a3a6ba767a9c6a580762ae7121c65292 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sat, 4 May 2024 00:52:01 +0530 Subject: [PATCH] feat: hide media from home screen --- .../connections/anilist/AnilistQueries.kt | 26 +++++++++++++------ .../dantotsu/media/MediaListDialogFragment.kt | 11 +++++++- .../media/MediaListDialogSmallFragment.kt | 11 +++++++- .../res/layout/bottom_sheet_media_list.xml | 7 +++++ .../layout/bottom_sheet_media_list_small.xml | 8 ++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 54 insertions(+), 10 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 e85b7815..1c8ba03d 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -11,7 +11,6 @@ import ani.dantotsu.connections.anilist.api.FuzzyDate import ani.dantotsu.connections.anilist.api.NotificationResponse import ani.dantotsu.connections.anilist.api.Page import ani.dantotsu.connections.anilist.api.Query -import ani.dantotsu.connections.anilist.api.Social import ani.dantotsu.connections.anilist.api.ToggleLike import ani.dantotsu.currContext import ani.dantotsu.isOnline @@ -413,6 +412,7 @@ class AnilistQueries { } suspend fun initHomePage(): Map> { + val removeList = PrefManager.getCustomVal("removeList", setOf()) val toShow: List = PrefManager.getVal(PrefName.HomeLayout) // anime continue, anime fav, anime planned, manga continue, manga fav, manga planned, recommendations var query = """{""" @@ -462,15 +462,20 @@ class AnilistQueries { current?.lists?.forEach { li -> li.entries?.reversed()?.forEach { val m = Media(it) - m.cameFromContinue = true - subMap[m.id] = m + if (m.id !in removeList) { + m.cameFromContinue = true + subMap[m.id] = m + } } } + repeating?.lists?.forEach { li -> li.entries?.reversed()?.forEach { val m = Media(it) - m.cameFromContinue = true - subMap[m.id] = m + if (m.id !in removeList) { + m.cameFromContinue = true + subMap[m.id] = m + } } } if (type != "Anime") { @@ -504,8 +509,10 @@ class AnilistQueries { current?.lists?.forEach { li -> li.entries?.reversed()?.forEach { val m = Media(it) - m.cameFromContinue = true - subMap[m.id] = m + if (m.id !in removeList) { + m.cameFromContinue = true + subMap[m.id] = m + } } } @Suppress("UNCHECKED_CAST") @@ -532,7 +539,10 @@ class AnilistQueries { val returnArray = arrayListOf() apiMediaList?.edges?.forEach { it.node?.let { i -> - returnArray.add(Media(i).apply { isFav = true }) + val m = Media(i).apply { isFav = true } + if (m.id !in removeList) { + returnArray.add(m) + } } } returnMap["favorite$type"] = returnArray diff --git a/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt index 6ac9d7f0..7a08ed10 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaListDialogFragment.kt @@ -20,6 +20,7 @@ import ani.dantotsu.connections.anilist.api.FuzzyDate import ani.dantotsu.connections.mal.MAL import ani.dantotsu.databinding.BottomSheetMediaListBinding import ani.dantotsu.navBarHeight +import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString import ani.dantotsu.tryWith import com.google.android.material.materialswitch.MaterialSwitch @@ -187,7 +188,15 @@ class MediaListDialogFragment : BottomSheetDialogFragment() { binding.mediaListPrivate.setOnCheckedChangeListener { _, checked -> media?.isListPrivate = checked } - + val removeList = PrefManager.getCustomVal("removeList", setOf()) + binding.mediaListShow.isChecked = media?.id in removeList + binding.mediaListShow.setOnCheckedChangeListener { _, checked -> + if (checked) { + PrefManager.setCustomVal("removeList", removeList.plus(media?.id)) + } else { + PrefManager.setCustomVal("removeList", removeList.minus(media?.id)) + } + } media?.userRepeat?.apply { binding.mediaListRewatch.setText(this.toString()) } diff --git a/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt index 36ded771..11fc6f3b 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaListDialogSmallFragment.kt @@ -18,6 +18,7 @@ import ani.dantotsu.connections.mal.MAL import ani.dantotsu.databinding.BottomSheetMediaListSmallBinding import ani.dantotsu.navBarHeight import ani.dantotsu.others.getSerialized +import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.snackString import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -170,7 +171,15 @@ class MediaListDialogSmallFragment : BottomSheetDialogFragment() { binding.mediaListPrivate.setOnCheckedChangeListener { _, checked -> media.isListPrivate = checked } - + val removeList = PrefManager.getCustomVal("removeList", setOf()) + binding.mediaListShow.isChecked = media?.id in removeList + binding.mediaListShow.setOnCheckedChangeListener { _, checked -> + if (checked) { + PrefManager.setCustomVal("removeList", removeList.plus(media.id)) + } else { + PrefManager.setCustomVal("removeList", removeList.minus(media.id)) + } + } binding.mediaListSave.setOnClickListener { scope.launch { withContext(Dispatchers.IO) { diff --git a/app/src/main/res/layout/bottom_sheet_media_list.xml b/app/src/main/res/layout/bottom_sheet_media_list.xml index a4347496..2563d723 100644 --- a/app/src/main/res/layout/bottom_sheet_media_list.xml +++ b/app/src/main/res/layout/bottom_sheet_media_list.xml @@ -338,6 +338,13 @@ android:fontFamily="@font/poppins_bold" android:text="@string/list_private" /> + + + An unexpected error occurred.\nPlease send a crash report to the developer :) Copy Report Share as file + Hide in Home Screen