diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt index 09d8f8b46..271892b9b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt @@ -66,10 +66,11 @@ class AndroidNotificationTray habit: Habit, notificationId: Int, timestamp: Timestamp, - reminderTime: Long + reminderTime: Long, + silent: Boolean ) { val notificationManager = NotificationManagerCompat.from(context) - val notification = buildNotification(habit, reminderTime, timestamp) + val notification = buildNotification(habit, reminderTime, timestamp, silent = silent) createAndroidNotificationChannel(context) try { notificationManager.notify(notificationId, notification) @@ -83,7 +84,8 @@ class AndroidNotificationTray habit, reminderTime, timestamp, - disableSound = true + disableSound = true, + silent = silent ) notificationManager.notify(notificationId, n) } @@ -94,7 +96,8 @@ class AndroidNotificationTray habit: Habit, reminderTime: Long, timestamp: Timestamp, - disableSound: Boolean = false + disableSound: Boolean = false, + silent: Boolean = false ): Notification { val addRepetitionAction = Action( @@ -132,6 +135,7 @@ class AndroidNotificationTray .setSound(null) .setWhen(reminderTime) .setShowWhen(true) + .setSilent(silent) .setOngoing(preferences.shouldMakeNotificationsSticky()) if (habit.isNumerical) { diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/NotificationTray.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/NotificationTray.kt index f4439fe2f..09bb9596a 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/NotificationTray.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/NotificationTray.kt @@ -117,19 +117,26 @@ class NotificationTray @Inject constructor( habit: Habit, notificationId: Int, timestamp: Timestamp, - reminderTime: Long + reminderTime: Long, + silent: Boolean = false ) fun log(msg: String) } @Serializable - internal class NotificationData(val timestamp: Timestamp, val reminderTime: Long) - private inner class ShowNotificationTask(private val habit: Habit, data: NotificationData) : + internal class NotificationData( + val timestamp: Timestamp, + val reminderTime: Long, + var shown: Boolean = false + ) + + private inner class ShowNotificationTask( + private val habit: Habit, + private val data: NotificationData + ) : Task { var isCompleted = false - private val timestamp: Timestamp = data.timestamp - private val reminderTime: Long = data.reminderTime override fun doInBackground() { isCompleted = habit.isCompletedToday() @@ -184,8 +191,9 @@ class NotificationTray @Inject constructor( systemTray.showNotification( habit, getNotificationId(habit), - timestamp, - reminderTime + data.timestamp, + data.reminderTime, + silent = data.shown ) if (data.shown) { systemTray.log( @@ -204,7 +212,7 @@ class NotificationTray @Inject constructor( if (!habit.hasReminder()) return false val reminder = habit.reminder val reminderDays = Objects.requireNonNull(reminder)!!.days.toArray() - val weekday = timestamp.weekday + val weekday = data.timestamp.weekday return reminderDays[weekday] } }