feat: view subscriptions in settings
This commit is contained in:
parent
f1d16ba16a
commit
6c1176a182
14 changed files with 221 additions and 15 deletions
|
@ -18,6 +18,7 @@ import ani.dantotsu.navBarHeight
|
|||
import ani.dantotsu.notifications.TaskScheduler
|
||||
import ani.dantotsu.notifications.anilist.AnilistNotificationWorker
|
||||
import ani.dantotsu.notifications.comment.CommentNotificationWorker
|
||||
import ani.dantotsu.notifications.subscription.SubscriptionHelper
|
||||
import ani.dantotsu.notifications.subscription.SubscriptionNotificationWorker
|
||||
import ani.dantotsu.openSettings
|
||||
import ani.dantotsu.settings.saving.PrefManager
|
||||
|
@ -102,6 +103,19 @@ class SettingsNotificationActivity : AppCompatActivity() {
|
|||
).scheduleAllTasks(context)
|
||||
}
|
||||
),
|
||||
Settings(
|
||||
type = 1,
|
||||
name = getString(R.string.view_subscriptions),
|
||||
desc = getString(R.string.view_subscriptions_desc),
|
||||
icon = R.drawable.ic_round_search_24,
|
||||
onClick = {
|
||||
val subscriptions = SubscriptionHelper.getSubscriptions()
|
||||
SubscriptionsBottomDialog.newInstance(subscriptions).show(
|
||||
supportFragmentManager,
|
||||
"subscriptions"
|
||||
)
|
||||
}
|
||||
),
|
||||
Settings(
|
||||
type = 1,
|
||||
name = getString(R.string.anilist_notification_filters),
|
||||
|
|
52
app/src/main/java/ani/dantotsu/settings/SubscriptionItem.kt
Normal file
52
app/src/main/java/ani/dantotsu/settings/SubscriptionItem.kt
Normal file
|
@ -0,0 +1,52 @@
|
|||
package ani.dantotsu.settings
|
||||
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import ani.dantotsu.R
|
||||
import ani.dantotsu.databinding.ItemSubscriptionBinding
|
||||
import ani.dantotsu.media.MediaDetailsActivity
|
||||
import ani.dantotsu.notifications.subscription.SubscriptionHelper
|
||||
import com.xwray.groupie.GroupieAdapter
|
||||
import com.xwray.groupie.Item
|
||||
import com.xwray.groupie.viewbinding.BindableItem
|
||||
|
||||
class SubscriptionItem(
|
||||
val id: Int,
|
||||
private val media: SubscriptionHelper.Companion.SubscribeMedia,
|
||||
private val adapter: GroupieAdapter
|
||||
) : BindableItem<ItemSubscriptionBinding>() {
|
||||
private lateinit var binding: ItemSubscriptionBinding
|
||||
override fun bind(p0: ItemSubscriptionBinding, p1: Int) {
|
||||
val context = p0.root.context
|
||||
binding = p0
|
||||
val parserName = if (media.isAnime)
|
||||
SubscriptionHelper.getAnimeParser(media.id).name
|
||||
else
|
||||
SubscriptionHelper.getMangaParser(media.id).name
|
||||
val mediaName = media.name
|
||||
val showName = "$mediaName - $parserName"
|
||||
binding.subscriptionName.text = showName
|
||||
binding.root.setOnClickListener {
|
||||
ContextCompat.startActivity(
|
||||
context,
|
||||
Intent(context, MediaDetailsActivity::class.java).putExtra(
|
||||
"mediaId", media.id
|
||||
),
|
||||
null
|
||||
)
|
||||
}
|
||||
binding.deleteSubscription.setOnClickListener {
|
||||
SubscriptionHelper.deleteSubscription(id, true)
|
||||
adapter.remove(this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLayout(): Int {
|
||||
return R.layout.item_subscription
|
||||
}
|
||||
|
||||
override fun initializeViewBinding(p0: View): ItemSubscriptionBinding {
|
||||
return ItemSubscriptionBinding.bind(p0)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package ani.dantotsu.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import ani.dantotsu.BottomSheetDialogFragment
|
||||
import ani.dantotsu.R
|
||||
import ani.dantotsu.databinding.BottomSheetRecyclerBinding
|
||||
import ani.dantotsu.notifications.subscription.SubscriptionHelper
|
||||
import com.xwray.groupie.GroupieAdapter
|
||||
|
||||
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()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
_binding = BottomSheetRecyclerBinding.inflate(inflater, container, false)
|
||||
return _binding?.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.repliesRecyclerView.adapter = adapter
|
||||
binding.repliesRecyclerView.layoutManager = LinearLayoutManager(
|
||||
context,
|
||||
LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
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))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
_binding = null
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance(subscriptions: Map<Int, SubscriptionHelper.Companion.SubscribeMedia>): SubscriptionsBottomDialog {
|
||||
val dialog = SubscriptionsBottomDialog()
|
||||
dialog.subscriptions = subscriptions
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
}
|
|
@ -395,9 +395,11 @@ object PrefManager {
|
|||
val obj = ois.readObject() as T?
|
||||
obj
|
||||
} else {
|
||||
Logger.log("Serialized data is null (key: $key)")
|
||||
default
|
||||
}
|
||||
} catch (e: java.io.InvalidClassException) {
|
||||
Logger.log(e)
|
||||
try {
|
||||
getPrefLocation(location).edit().remove(key).apply()
|
||||
default
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue