From 2bb22cfbae3be5b3a5c9c9980ee3cd65566da5a5 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Fri, 14 Apr 2023 16:16:28 +0530 Subject: [PATCH] Configure only summary or single stream notifications to make noise. --- .../libretube/workers/NotificationWorker.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt index 4df75acff..a8eb6c6e1 100644 --- a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt +++ b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt @@ -139,17 +139,15 @@ class NotificationWorker(appContext: Context, parameters: WorkerParameters) : private suspend fun createNotificationsForChannel(group: String, streams: List) { // Create stream notifications. These are automatically grouped on Android 7.0 and later. if (streams.size == 1) { - showStreamNotification(group, streams[0]) + showStreamNotification(group, streams[0], true) } else { streams.forEach { - showStreamNotification(group, it) + showStreamNotification(group, it, false) } val summaryId = ++notificationId - val intentFlags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK or - Intent.FLAG_ACTIVITY_CLEAR_TASK val intent = Intent(applicationContext, MainActivity::class.java) - .setFlags(intentFlags) + .setFlags(INTENT_FLAGS) .putExtra(IntentData.channelId, group.toID()) val pendingIntent = PendingIntentCompat @@ -169,18 +167,20 @@ class NotificationWorker(appContext: Context, parameters: WorkerParameters) : .setContentIntent(pendingIntent) .setGroupSummary(true) .setStyle(summary) + .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_SUMMARY) .build() notificationManager.notify(summaryId, summaryNotification) } } - private suspend fun showStreamNotification(group: String, stream: StreamItem) { - val intentFlags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK or - Intent.FLAG_ACTIVITY_CLEAR_TASK - + private suspend fun showStreamNotification( + group: String, + stream: StreamItem, + isSingleNotification: Boolean + ) { val intent = Intent(applicationContext, MainActivity::class.java) - .setFlags(intentFlags) + .setFlags(INTENT_FLAGS) .putExtra(IntentData.videoId, stream.url!!.toID()) val code = ++notificationId val pendingIntent = PendingIntentCompat @@ -191,6 +191,7 @@ class NotificationWorker(appContext: Context, parameters: WorkerParameters) : .setContentText(stream.uploaderName) // The intent that will fire when the user taps the notification .setContentIntent(pendingIntent) + .setSilent(!isSingleNotification) // Load stream thumbnails if the relevant toggle is enabled. if (PreferenceHelper.getBoolean(PreferenceKeys.SHOW_STREAM_THUMBNAILS, false)) { @@ -217,4 +218,9 @@ class NotificationWorker(appContext: Context, parameters: WorkerParameters) : .setAutoCancel(true) .setGroup(group) } + + companion object { + private const val INTENT_FLAGS = Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + } }