feat: sort subscriptions in groups (#443)
This commit is contained in:
parent
2180086573
commit
ae95b61298
6 changed files with 184 additions and 25 deletions
|
@ -1,5 +1,6 @@
|
|||
package ani.dantotsu.settings
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
@ -9,13 +10,21 @@ import ani.dantotsu.BottomSheetDialogFragment
|
|||
import ani.dantotsu.R
|
||||
import ani.dantotsu.databinding.BottomSheetRecyclerBinding
|
||||
import ani.dantotsu.notifications.subscription.SubscriptionHelper
|
||||
import ani.dantotsu.parsers.novel.NovelExtensionManager
|
||||
import com.xwray.groupie.GroupieAdapter
|
||||
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
||||
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class SubscriptionsBottomDialog : BottomSheetDialogFragment() {
|
||||
private var _binding: BottomSheetRecyclerBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
private val adapter: GroupieAdapter = GroupieAdapter()
|
||||
private var subscriptions: Map<Int, SubscriptionHelper.Companion.SubscribeMedia> = mapOf()
|
||||
private val animeExtension: AnimeExtensionManager = Injekt.get()
|
||||
private val mangaExtensions: MangaExtensionManager = Injekt.get()
|
||||
private val novelExtensions: NovelExtensionManager = Injekt.get()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
|
@ -36,8 +45,33 @@ class SubscriptionsBottomDialog : BottomSheetDialogFragment() {
|
|||
val context = requireContext()
|
||||
binding.title.text = context.getString(R.string.subscriptions)
|
||||
binding.replyButton.visibility = View.GONE
|
||||
subscriptions.forEach { (id, media) ->
|
||||
adapter.add(SubscriptionItem(id, media, adapter))
|
||||
|
||||
val groupedSubscriptions = subscriptions.values.groupBy {
|
||||
if (it.isAnime) SubscriptionHelper.getAnimeParser(it.id).name
|
||||
else SubscriptionHelper.getMangaParser(it.id).name
|
||||
}
|
||||
|
||||
groupedSubscriptions.forEach { (parserName, mediaList) ->
|
||||
adapter.add(SubscriptionSource(
|
||||
parserName,
|
||||
mediaList.toMutableList(),
|
||||
adapter,
|
||||
getParserIcon(parserName)
|
||||
) { group ->
|
||||
adapter.remove(group)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun getParserIcon(parserName: String): Drawable? {
|
||||
return when {
|
||||
animeExtension.installedExtensionsFlow.value.any { it.name == parserName } ->
|
||||
animeExtension.installedExtensionsFlow.value.find { it.name == parserName }?.icon
|
||||
mangaExtensions.installedExtensionsFlow.value.any { it.name == parserName } ->
|
||||
mangaExtensions.installedExtensionsFlow.value.find { it.name == parserName }?.icon
|
||||
novelExtensions.installedExtensionsFlow.value.any { it.name == parserName } ->
|
||||
novelExtensions.installedExtensionsFlow.value.find { it.name == parserName }?.icon
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue