Merge pull request #3786 from vector-im/feature/dla/fix_missing_notification_noise

Fix missing sounds on room notifications (messages, invitations, etc).
This commit is contained in:
Benoit Marty 2021-08-23 15:04:20 +02:00 committed by GitHub
commit ee0b87bd82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 4 deletions

1
changelog.d/3243.bugfix Normal file
View file

@ -0,0 +1 @@
Notifications - Fix missing sound on notifications.

View file

@ -100,13 +100,14 @@ class NotificationDrawerManager @Inject constructor(private val context: Context
if (existing != null) {
if (existing.isPushGatewayEvent) {
// Use the event coming from the event stream as it may contains more info than
// the fcm one (like type/content/clear text)
// the fcm one (like type/content/clear text) (e.g when an encrypted message from
// FCM should be update with clear text after a sync)
// In this case the message has already been notified, and might have done some noise
// So we want the notification to be updated even if it has already been displayed
// But it should make no noise (e.g when an encrypted message from FCM should be
// update with clear text after a sync)
// Use setOnlyAlertOnce to ensure update notification does not interfere with sound
// from first notify invocation as outlined in:
// https://developer.android.com/training/notify-user/build-notification#Updating
notifiableEvent.hasBeenDisplayed = false
notifiableEvent.noisy = false
eventList.remove(existing)
eventList.add(notifiableEvent)
} else {

View file

@ -540,6 +540,7 @@ class NotificationUtils @Inject constructor(private val context: Context,
val channelID = if (roomInfo.shouldBing) NOISY_NOTIFICATION_CHANNEL_ID else SILENT_NOTIFICATION_CHANNEL_ID
return NotificationCompat.Builder(context, channelID)
.setOnlyAlertOnce(true)
.setWhen(lastMessageTimestamp)
// MESSAGING_STYLE sets title and content for API 16 and above devices.
.setStyle(messageStyle)
@ -641,6 +642,7 @@ class NotificationUtils @Inject constructor(private val context: Context,
val channelID = if (inviteNotifiableEvent.noisy) NOISY_NOTIFICATION_CHANNEL_ID else SILENT_NOTIFICATION_CHANNEL_ID
return NotificationCompat.Builder(context, channelID)
.setOnlyAlertOnce(true)
.setContentTitle(stringProvider.getString(R.string.app_name))
.setContentText(inviteNotifiableEvent.description)
.setGroup(stringProvider.getString(R.string.app_name))
@ -704,6 +706,7 @@ class NotificationUtils @Inject constructor(private val context: Context,
val channelID = if (simpleNotifiableEvent.noisy) NOISY_NOTIFICATION_CHANNEL_ID else SILENT_NOTIFICATION_CHANNEL_ID
return NotificationCompat.Builder(context, channelID)
.setOnlyAlertOnce(true)
.setContentTitle(stringProvider.getString(R.string.app_name))
.setContentText(simpleNotifiableEvent.description)
.setGroup(stringProvider.getString(R.string.app_name))