diff --git a/app/build.gradle b/app/build.gradle index 8886aa90..f7a04f77 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ android { targetSdk 34 versionCode((System.currentTimeMillis() / 60000).toInteger()) versionName "3.0.0" - versionCode 220000000 + versionCode 300000000 signingConfig signingConfigs.debug } diff --git a/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt b/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt index 2e110541..c7434c96 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt @@ -283,6 +283,9 @@ class AnimeFragment : Fragment() { binding.root.requestApplyInsets() binding.root.requestLayout() } + if (this::animePageAdapter.isInitialized && _binding != null) { + animePageAdapter.updateNotificationCount() + } super.onResume() } } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt index 7665ace2..2c60b3ac 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt @@ -215,6 +215,14 @@ class AnimePageAdapter : RecyclerView.Adapter 0) View.VISIBLE else View.GONE + binding.animeNotificationCount.text = Anilist.unreadNotificationCount.toString() + } + } + inner class AnimePageViewHolder(val binding: ItemAnimePageBinding) : RecyclerView.ViewHolder(binding.root) } diff --git a/app/src/main/java/ani/dantotsu/home/MangaFragment.kt b/app/src/main/java/ani/dantotsu/home/MangaFragment.kt index efe39ed6..24eedc27 100644 --- a/app/src/main/java/ani/dantotsu/home/MangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/MangaFragment.kt @@ -258,6 +258,9 @@ class MangaFragment : Fragment() { binding.root.requestApplyInsets() binding.root.requestLayout() } + if (this::mangaPageAdapter.isInitialized && _binding != null) { + mangaPageAdapter.updateNotificationCount() + } super.onResume() } diff --git a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt index f4b34f7d..2aef3b6b 100644 --- a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt @@ -200,6 +200,14 @@ class MangaPageAdapter : RecyclerView.Adapter 0) View.VISIBLE else View.GONE + binding.mangaNotificationCount.text = Anilist.unreadNotificationCount.toString() + } + } + inner class MangaPageViewHolder(val binding: ItemMangaPageBinding) : RecyclerView.ViewHolder(binding.root) } diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt index e0fe6203..5e699799 100644 --- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt @@ -66,6 +66,7 @@ class CommentsFragment : Fragment() { savedInstanceState: Bundle? ): View { binding = FragmentCommentsBinding.inflate(inflater, container, false) + binding.commentsLayout.isNestedScrollingEnabled = true return binding.root } diff --git a/app/src/main/java/ani/dantotsu/notifications/AlarmManagerScheduler.kt b/app/src/main/java/ani/dantotsu/notifications/AlarmManagerScheduler.kt index 9c89a582..2c729d0b 100644 --- a/app/src/main/java/ani/dantotsu/notifications/AlarmManagerScheduler.kt +++ b/app/src/main/java/ani/dantotsu/notifications/AlarmManagerScheduler.kt @@ -15,6 +15,10 @@ import java.util.concurrent.TimeUnit class AlarmManagerScheduler(private val context: Context) : TaskScheduler { override fun scheduleRepeatingTask(taskType: TaskType, interval: Long) { + if (interval < TimeUnit.MINUTES.toMillis(15)) { + cancelTask(taskType) + return + } val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager val intent = when (taskType) { TaskType.COMMENT_NOTIFICATION -> Intent( diff --git a/app/src/main/java/ani/dantotsu/notifications/WorkManagerScheduler.kt b/app/src/main/java/ani/dantotsu/notifications/WorkManagerScheduler.kt index 0a26213e..422f5586 100644 --- a/app/src/main/java/ani/dantotsu/notifications/WorkManagerScheduler.kt +++ b/app/src/main/java/ani/dantotsu/notifications/WorkManagerScheduler.kt @@ -10,6 +10,10 @@ import ani.dantotsu.notifications.subscription.SubscriptionNotificationWorker class WorkManagerScheduler(private val context: Context) : TaskScheduler { override fun scheduleRepeatingTask(taskType: TaskType, interval: Long) { + if (interval < PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS) { + cancelTask(taskType) + return + } val constraints = Constraints.Builder() .setRequiredNetworkType(androidx.work.NetworkType.CONNECTED) .build() 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 fe01db58..9b68f377 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt @@ -129,6 +129,7 @@ class NotificationActivity : AppCompatActivity() { ) newNotifications += notification } + newNotifications.sortByDescending { it.createdAt } } notificationList += newNotifications 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 961d4c1a..bf56db20 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt @@ -2,6 +2,8 @@ package ani.dantotsu.profile.activity import android.util.TypedValue import android.view.View +import android.view.ViewGroup +import androidx.core.view.updateLayoutParams import ani.dantotsu.R import ani.dantotsu.blurImage import ani.dantotsu.connections.anilist.api.Notification @@ -37,17 +39,25 @@ class NotificationItem( ?: notification.user?.avatar?.medium else notification.media?.bannerImage ?: notification.media?.coverImage?.large blurImage(binding.notificationBannerImage, cover) + val defaultHeight = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, - 170f, + 153f, binding.root.context.resources.displayMetrics ).toInt() + val userHeight = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 90f, binding.root.context.resources.displayMetrics ).toInt() + val textMarginStart = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + 125f, + binding.root.context.resources.displayMetrics + ).toInt() + if (user) { binding.notificationCover.visibility = View.GONE binding.notificationCoverUser.visibility = View.VISIBLE @@ -60,12 +70,16 @@ class NotificationItem( binding.notificationCoverUser.loadImage(notification.user?.avatar?.large) } binding.notificationBannerImage.layoutParams.height = userHeight + binding.notificationGradiant.layoutParams.height = userHeight + (binding.notificationTextContainer.layoutParams as ViewGroup.MarginLayoutParams).marginStart = userHeight } else { binding.notificationCover.visibility = View.VISIBLE binding.notificationCoverUser.visibility = View.VISIBLE binding.notificationCoverUserContainer.visibility = View.GONE binding.notificationCover.loadImage(notification.media?.coverImage?.large) binding.notificationBannerImage.layoutParams.height = defaultHeight + binding.notificationGradiant.layoutParams.height = defaultHeight + (binding.notificationTextContainer.layoutParams as ViewGroup.MarginLayoutParams).marginStart = textMarginStart } } diff --git a/app/src/main/res/layout/fragment_comments.xml b/app/src/main/res/layout/fragment_comments.xml index 580e7ed3..4004a427 100644 --- a/app/src/main/res/layout/fragment_comments.xml +++ b/app/src/main/res/layout/fragment_comments.xml @@ -1,11 +1,12 @@ - + android:background="?android:colorBackground" + android:fillViewport="true"> - + diff --git a/app/src/main/res/layout/item_activity.xml b/app/src/main/res/layout/item_activity.xml index 5823bdaa..03b96d30 100644 --- a/app/src/main/res/layout/item_activity.xml +++ b/app/src/main/res/layout/item_activity.xml @@ -94,14 +94,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="18dp" - android:layout_marginEnd="18dp" android:layout_marginTop="3dp" + android:layout_marginEnd="18dp" + android:background="?android:colorBackground" android:fontFamily="@font/poppins_semi_bold" android:text="@string/lorem_ipsum" android:textAlignment="center" - tools:visibility="gone" - android:background="?android:colorBackground" - android:textSize="12sp" /> + android:textSize="12sp" + tools:visibility="gone" /> + app:cardCornerRadius="24dp" + app:strokeColor="@color/transparent"> @@ -128,8 +128,8 @@ @@ -138,14 +138,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" + android:layout_margin="16dp" android:layout_marginStart="16dp" android:backgroundTint="@color/bg_white" - app:cardCornerRadius="16dp"> + app:cardCornerRadius="16dp" + app:strokeColor="@color/transparent"> + android:orientation="vertical" + android:padding="8dp"> @@ -224,7 +229,8 @@ android:id="@+id/activityReplies" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone" - android:layout_marginStart="16dp"/> + android:layout_marginStart="16dp" + android:nestedScrollingEnabled="false" + android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_comments.xml b/app/src/main/res/layout/item_comments.xml index 2bc15c09..21111c9b 100644 --- a/app/src/main/res/layout/item_comments.xml +++ b/app/src/main/res/layout/item_comments.xml @@ -318,6 +318,7 @@ android:paddingStart="16dp" android:visibility="visible" tools:ignore="RtlSymmetry" + android:nestedScrollingEnabled="false" tools:visibility="visible" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_follower.xml b/app/src/main/res/layout/item_follower.xml index 949d39ed..2908ff31 100644 --- a/app/src/main/res/layout/item_follower.xml +++ b/app/src/main/res/layout/item_follower.xml @@ -18,7 +18,7 @@ diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml index de373fe1..77868138 100644 --- a/app/src/main/res/layout/item_notification.xml +++ b/app/src/main/res/layout/item_notification.xml @@ -19,14 +19,15 @@ @@ -35,18 +36,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" - android:layout_marginStart="16dp" + android:layout_margin="16dp" android:backgroundTint="@color/transparent" app:cardCornerRadius="16dp" app:strokeColor="@color/transparent"> @@ -74,11 +76,14 @@ + tools:ignore="HardcodedText,SmallSp" /> diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 981a2b94..8c8f32b9 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -6,8 +6,8 @@ #1C1C1C #001C1C1C #40ffffff - #AA1C1C1C - #20000000 + #AA1C1C1C + #434343 #40ffffff #00000000 #80000000 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 51a30a31..5a4dcc12 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,10 +11,10 @@ #80000000 #fff #00BFAEAE - #40000000 - #88989898 - #00FFFFFF + #ACACAC + #00BFAEAE #19000000 + #40000000 #00000000 #A9FFFFFF #80FFFFFF