From 039e3d63fe053c0d97cae820d247e093a88b6e36 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Wed, 22 May 2024 00:20:40 +0530 Subject: [PATCH] feat: banner and cover for airing notifications --- .../ani/dantotsu/connections/anilist/api/Notification.kt | 2 ++ .../notifications/subscription/SubscriptionHelper.kt | 6 ++++-- .../subscription/SubscriptionNotificationTask.kt | 8 ++++---- .../notifications/subscription/SubscriptionStore.kt | 2 ++ .../ani/dantotsu/profile/activity/NotificationActivity.kt | 2 ++ .../ani/dantotsu/profile/activity/NotificationItem.kt | 8 ++++---- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/api/Notification.kt b/app/src/main/java/ani/dantotsu/connections/anilist/api/Notification.kt index ac404203..3928cf86 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/api/Notification.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/api/Notification.kt @@ -111,6 +111,8 @@ data class Notification( val thread: Thread? = null, @SerialName("comment") val comment: ThreadComment? = null, + val image: String? = null, + val banner: String? = null, ) : java.io.Serializable @Serializable diff --git a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionHelper.kt b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionHelper.kt index 08104de1..f03b1148 100644 --- a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionHelper.kt +++ b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionHelper.kt @@ -146,7 +146,8 @@ class SubscriptionHelper { val isAdult: Boolean, val id: Int, val name: String, - val image: String? + val image: String?, + val banner: String? = null ) : java.io.Serializable private const val SUBSCRIPTIONS = "subscriptions" @@ -188,7 +189,8 @@ class SubscriptionHelper { media.isAdult, media.id, media.userPreferredName, - media.cover + media.cover, + media.banner ) data[media.id] = new } diff --git a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionNotificationTask.kt b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionNotificationTask.kt index c138c29b..efdb1bda 100644 --- a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionNotificationTask.kt +++ b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionNotificationTask.kt @@ -122,7 +122,9 @@ class SubscriptionNotificationTask : Task { SubscriptionStore( media.name, text.first, - media.id + media.id, + image = media.image, + banner = media.banner ) ) PrefManager.setVal(PrefName.UnreadCommentNotifications, @@ -238,9 +240,7 @@ class SubscriptionNotificationTask : Task { if (newStore.size >= 100) { newStore.remove(newStore.minByOrNull { it.time }) } - if (newStore.any { it.title == notification.title && it.content == notification.content}) { - return - } + newStore.add(notification) PrefManager.setVal(PrefName.SubscriptionNotificationStore, newStore) } diff --git a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionStore.kt b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionStore.kt index dfb910f5..381f2f75 100644 --- a/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionStore.kt +++ b/app/src/main/java/ani/dantotsu/notifications/subscription/SubscriptionStore.kt @@ -9,6 +9,8 @@ data class SubscriptionStore( val mediaId: Int, val type: String = "SUBSCRIPTION", val time: Long = System.currentTimeMillis(), + val image: String? = "", + val banner: String? = "", ) : java.io.Serializable { companion object { private const val serialVersionUID = 1L diff --git a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt index 372d5e80..def4e73f 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt @@ -235,6 +235,8 @@ class NotificationActivity : AppCompatActivity() { notificationType = it.type, context = it.title + ": " + it.content, createdAt = (it.time / 1000L).toInt(), + image = it.image, + banner = it.banner ) newNotifications += notification } diff --git a/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt index 23224184..d0e932d9 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt @@ -32,12 +32,12 @@ class NotificationItem( return ItemNotificationBinding.bind(view) } - private fun image(user: Boolean = false, commentNotification: Boolean = false) { + private fun image(user: Boolean = false, commentNotification: Boolean = false, newRelease: Boolean = false) { val cover = if (user) notification.user?.bannerImage ?: notification.user?.avatar?.medium else notification.media?.bannerImage ?: notification.media?.coverImage?.large - blurImage(binding.notificationBannerImage, cover) + blurImage(binding.notificationBannerImage, if (newRelease) notification.banner else cover) val defaultHeight = 153.toPx @@ -64,7 +64,7 @@ class NotificationItem( binding.notificationCover.visibility = View.VISIBLE binding.notificationCoverUser.visibility = View.VISIBLE binding.notificationCoverUserContainer.visibility = View.GONE - binding.notificationCover.loadImage(notification.media?.coverImage?.large) + binding.notificationCover.loadImage(if (newRelease) notification.image else notification.media?.coverImage?.large) binding.notificationBannerImage.layoutParams.height = defaultHeight binding.notificationGradiant.layoutParams.height = defaultHeight (binding.notificationTextContainer.layoutParams as ViewGroup.MarginLayoutParams).marginStart = @@ -334,7 +334,7 @@ class NotificationItem( } NotificationType.SUBSCRIPTION -> { - image(user = true, commentNotification = true) + image(newRelease = true) binding.notificationCoverUser.setOnClickListener { clickCallback( notification.mediaId ?: 0, null, NotificationClickType.MEDIA