feat: long click "continue Watching" to see hidden items
This commit is contained in:
parent
aae80f6493
commit
7aa0951cdf
5 changed files with 103 additions and 5 deletions
|
@ -413,6 +413,7 @@ class AnilistQueries {
|
||||||
|
|
||||||
suspend fun initHomePage(): Map<String, ArrayList<*>> {
|
suspend fun initHomePage(): Map<String, ArrayList<*>> {
|
||||||
val removeList = PrefManager.getCustomVal("removeList", setOf<Int>())
|
val removeList = PrefManager.getCustomVal("removeList", setOf<Int>())
|
||||||
|
val removedMedia = ArrayList<Media>()
|
||||||
val toShow: List<Boolean> =
|
val toShow: List<Boolean> =
|
||||||
PrefManager.getVal(PrefName.HomeLayout) // anime continue, anime fav, anime planned, manga continue, manga fav, manga planned, recommendations
|
PrefManager.getVal(PrefName.HomeLayout) // anime continue, anime fav, anime planned, manga continue, manga fav, manga planned, recommendations
|
||||||
var query = """{"""
|
var query = """{"""
|
||||||
|
@ -465,6 +466,8 @@ class AnilistQueries {
|
||||||
if (m.id !in removeList) {
|
if (m.id !in removeList) {
|
||||||
m.cameFromContinue = true
|
m.cameFromContinue = true
|
||||||
subMap[m.id] = m
|
subMap[m.id] = m
|
||||||
|
} else {
|
||||||
|
removedMedia.add(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -475,6 +478,8 @@ class AnilistQueries {
|
||||||
if (m.id !in removeList) {
|
if (m.id !in removeList) {
|
||||||
m.cameFromContinue = true
|
m.cameFromContinue = true
|
||||||
subMap[m.id] = m
|
subMap[m.id] = m
|
||||||
|
} else {
|
||||||
|
removedMedia.add(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -512,6 +517,8 @@ class AnilistQueries {
|
||||||
if (m.id !in removeList) {
|
if (m.id !in removeList) {
|
||||||
m.cameFromContinue = true
|
m.cameFromContinue = true
|
||||||
subMap[m.id] = m
|
subMap[m.id] = m
|
||||||
|
} else {
|
||||||
|
removedMedia.add(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -542,6 +549,8 @@ class AnilistQueries {
|
||||||
val m = Media(i).apply { isFav = true }
|
val m = Media(i).apply { isFav = true }
|
||||||
if (m.id !in removeList) {
|
if (m.id !in removeList) {
|
||||||
returnArray.add(m)
|
returnArray.add(m)
|
||||||
|
} else {
|
||||||
|
removedMedia.add(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -643,6 +652,7 @@ class AnilistQueries {
|
||||||
list.addAll(0, anilistActivities)
|
list.addAll(0, anilistActivities)
|
||||||
returnMap["status"] = ArrayList(list)
|
returnMap["status"] = ArrayList(list)
|
||||||
}
|
}
|
||||||
|
returnMap["hidden"] = removedMedia.distinctBy { it.id } as ArrayList<Media>
|
||||||
}
|
}
|
||||||
return returnMap
|
return returnMap
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,15 @@ class AnilistHomeViewModel : ViewModel() {
|
||||||
|
|
||||||
fun getRecommendation(): LiveData<ArrayList<Media>> = recommendation
|
fun getRecommendation(): LiveData<ArrayList<Media>> = recommendation
|
||||||
|
|
||||||
|
private val userStatus: MutableLiveData<ArrayList<User>> =
|
||||||
|
MutableLiveData<ArrayList<User>>(null)
|
||||||
|
|
||||||
|
fun getUserStatus(): LiveData<ArrayList<User>> = userStatus
|
||||||
|
|
||||||
|
private val hidden: MutableLiveData<ArrayList<Media>> =
|
||||||
|
MutableLiveData<ArrayList<Media>>(null)
|
||||||
|
|
||||||
|
fun getHidden(): LiveData<ArrayList<Media>> = hidden
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
suspend fun initHomePage() {
|
suspend fun initHomePage() {
|
||||||
val res = Anilist.query.initHomePage()
|
val res = Anilist.query.initHomePage()
|
||||||
|
@ -91,12 +100,10 @@ class AnilistHomeViewModel : ViewModel() {
|
||||||
res["favoriteManga"]?.let { mangaFav.postValue(it as ArrayList<Media>?) }
|
res["favoriteManga"]?.let { mangaFav.postValue(it as ArrayList<Media>?) }
|
||||||
res["plannedManga"]?.let { mangaPlanned.postValue(it as ArrayList<Media>?) }
|
res["plannedManga"]?.let { mangaPlanned.postValue(it as ArrayList<Media>?) }
|
||||||
res["recommendations"]?.let { recommendation.postValue(it as ArrayList<Media>?) }
|
res["recommendations"]?.let { recommendation.postValue(it as ArrayList<Media>?) }
|
||||||
|
res["hidden"]?.let { hidden.postValue(it as ArrayList<Media>?) }
|
||||||
res["status"]?.let { userStatus.postValue(it as ArrayList<User>?) }
|
res["status"]?.let { userStatus.postValue(it as ArrayList<User>?) }
|
||||||
}
|
}
|
||||||
private val userStatus: MutableLiveData<ArrayList<User>> =
|
|
||||||
MutableLiveData<ArrayList<User>>(null)
|
|
||||||
|
|
||||||
fun getUserStatus(): LiveData<ArrayList<User>> = userStatus
|
|
||||||
|
|
||||||
suspend fun loadMain(context: FragmentActivity) {
|
suspend fun loadMain(context: FragmentActivity) {
|
||||||
Anilist.getSavedToken()
|
Anilist.getSavedToken()
|
||||||
|
|
|
@ -281,7 +281,6 @@ class HomeFragment : Fragment() {
|
||||||
binding.homeFavAnime,
|
binding.homeFavAnime,
|
||||||
binding.homeFavAnimeMore,
|
binding.homeFavAnimeMore,
|
||||||
getString(R.string.fav_anime)
|
getString(R.string.fav_anime)
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
initRecyclerView(
|
initRecyclerView(
|
||||||
|
@ -376,6 +375,37 @@ class HomeFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
model.getHidden().observe(viewLifecycleOwner) {
|
||||||
|
if (it != null) {
|
||||||
|
if (it.isNotEmpty()) {
|
||||||
|
binding.homeHiddenItemsRecyclerView.adapter = MediaAdaptor(0, it, requireActivity())
|
||||||
|
binding.homeHiddenItemsRecyclerView.layoutManager = LinearLayoutManager(
|
||||||
|
requireContext(),
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
binding.homeContinueWatch.setOnLongClickListener {
|
||||||
|
binding.homeHiddenItemsContainer.visibility = View.VISIBLE
|
||||||
|
binding.homeHiddenItemsRecyclerView.layoutAnimation =
|
||||||
|
LayoutAnimationController(setSlideIn(), 0.25f)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
binding.homeHiddenItemsMore.setSafeOnClickListener { _ ->
|
||||||
|
ContextCompat.startActivity(
|
||||||
|
requireActivity(), Intent(requireActivity(), MediaListViewActivity::class.java)
|
||||||
|
.putExtra("title", getString(R.string.hidden))
|
||||||
|
.putExtra("media", it),
|
||||||
|
null
|
||||||
|
)
|
||||||
|
}
|
||||||
|
binding.homeHiddenItemsTitle.setOnLongClickListener {
|
||||||
|
binding.homeHiddenItemsContainer.visibility = View.GONE
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binding.homeUserAvatarContainer.startAnimation(setSlideUp())
|
binding.homeUserAvatarContainer.startAnimation(setSlideUp())
|
||||||
|
|
||||||
model.empty.observe(viewLifecycleOwner)
|
model.empty.observe(viewLifecycleOwner)
|
||||||
|
|
|
@ -338,6 +338,56 @@
|
||||||
tools:orientation="horizontal" />
|
tools:orientation="horizontal" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/homeHiddenItemsContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/homeHiddenItemsTitle"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/hidden"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/homeHiddenItemsMore"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:src="@drawable/arrow_mark"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:ignore="ContentDescription" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
android:id="@+id/homeHiddenItemsRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:paddingStart="20dp"
|
||||||
|
android:paddingEnd="20dp"
|
||||||
|
android:requiresFadingEdge="horizontal"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/item_media_compact"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/homeContinueWatchingContainer"
|
android:id="@+id/homeContinueWatchingContainer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -827,8 +877,8 @@
|
||||||
android:id="@+id/homePlannedManga"
|
android:id="@+id/homePlannedManga"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_marginStart="24dp"
|
android:layout_marginStart="24dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:text="@string/planned_manga"
|
android:text="@string/planned_manga"
|
||||||
|
|
|
@ -973,4 +973,5 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc
|
||||||
<string name="copy_report">Copy Report</string>
|
<string name="copy_report">Copy Report</string>
|
||||||
<string name="share_as_file">Share as file</string>
|
<string name="share_as_file">Share as file</string>
|
||||||
<string name="hide_in_home_screen">Hide in Home Screen</string>
|
<string name="hide_in_home_screen">Hide in Home Screen</string>
|
||||||
|
<string name="hidden">Hidden</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue