diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 675daedc..2a70eb8b 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -43,6 +43,8 @@ import ani.dantotsu.home.MangaFragment import ani.dantotsu.home.NoInternet import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.others.CustomBottomDialog +import ani.dantotsu.profile.activity.FeedActivity +import ani.dantotsu.profile.activity.NotificationActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefManager.asLiveBool import ani.dantotsu.settings.saving.PrefName @@ -226,6 +228,7 @@ class MainActivity : AppCompatActivity() { val fragmentToLoad = extras.getString("FRAGMENT_TO_LOAD") val mediaId = extras.getInt("mediaId", -1) val commentId = extras.getInt("commentId", -1) + val activityId = extras.getInt("activityId", -1) if (fragmentToLoad != null && mediaId != -1 && commentId != -1) { val detailIntent = Intent(this, MediaDetailsActivity::class.java).apply { @@ -234,7 +237,19 @@ class MainActivity : AppCompatActivity() { putExtra("commentId", commentId) } startActivity(detailIntent) - return + } else if (fragmentToLoad == "FEED" && activityId != -1) { + val feedIntent = Intent(this, FeedActivity::class.java).apply { + putExtra("FRAGMENT_TO_LOAD", "NOTIFICATIONS") + putExtra("activityId", activityId) + + } + startActivity(feedIntent) + } else if (fragmentToLoad == "NOTIFICATIONS" && activityId != -1) { + val notificationIntent = Intent(this, NotificationActivity::class.java).apply { + putExtra("FRAGMENT_TO_LOAD", "NOTIFICATIONS") + putExtra("activityId", activityId) + } + startActivity(notificationIntent) } } val offlineMode: Boolean = PrefManager.getVal(PrefName.OfflineMode) diff --git a/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt b/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt index 0449984c..e8ed3904 100644 --- a/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt +++ b/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt @@ -10,6 +10,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.work.Worker import androidx.work.WorkerParameters +import ani.dantotsu.MainActivity import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.profile.activity.ActivityItemBuilder @@ -43,7 +44,7 @@ class AnilistNotificationWorker(appContext: Context, workerParams: WorkerParamet newNotifications?.forEach { if (!filteredTypes.contains(it.notificationType)) { val content = ActivityItemBuilder.getContent(it) - val notification = createNotification(applicationContext, content) + val notification = createNotification(applicationContext, content, it.id) if (ActivityCompat.checkSelfPermission( applicationContext, Manifest.permission.POST_NOTIFICATIONS @@ -70,11 +71,17 @@ class AnilistNotificationWorker(appContext: Context, workerParams: WorkerParamet private fun createNotification( context: Context, - content: String + content: String, + activityId: Int? = null ): android.app.Notification { val title = "New Anilist Notification" - val intent = Intent(applicationContext, FeedActivity::class.java) - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + val intent = Intent(applicationContext, MainActivity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + putExtra("FRAGMENT_TO_LOAD", "NOTIFICATIONS") + if (activityId != null) { + putExtra("activityId", activityId) + } + } val pendingIntent = PendingIntent.getActivity( applicationContext, 0, 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 881c9975..ff228018 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt @@ -51,10 +51,16 @@ class NotificationActivity : AppCompatActivity() { onBackPressed() } binding.listProgressBar.visibility = ViewGroup.VISIBLE + val activityId = intent.getIntExtra("activityId", -1) lifecycleScope.launch { - val res = Anilist.query.getNotifications(Anilist.userid?:0) + val resetNotification = activityId == -1 + val res = Anilist.query.getNotifications(Anilist.userid?:0, resetNotification = resetNotification) res?.data?.page?.notifications?.let { notifications -> - notificationList = notifications + notificationList = if (activityId != -1) { + notifications.filter { it.id == activityId } + } else { + notifications + } adapter.update(notificationList.map { NotificationItem(it, ::onNotificationClick) }) } withContext(Dispatchers.Main){