mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 15:44:54 +00:00
Fix crash when trying to get active notifications (#5085)
Sometimes something goes wrong when unmarshalling them
This commit is contained in:
committed by
GitHub
parent
6017379ecc
commit
4534229e84
+8
-1
@@ -10,10 +10,12 @@ package io.element.android.libraries.push.impl.notifications
|
|||||||
import android.service.notification.StatusBarNotification
|
import android.service.notification.StatusBarNotification
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.push.api.notifications.NotificationIdProvider
|
import io.element.android.libraries.push.api.notifications.NotificationIdProvider
|
||||||
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
interface ActiveNotificationsProvider {
|
interface ActiveNotificationsProvider {
|
||||||
@@ -30,7 +32,12 @@ class DefaultActiveNotificationsProvider @Inject constructor(
|
|||||||
private val notificationManager: NotificationManagerCompat,
|
private val notificationManager: NotificationManagerCompat,
|
||||||
) : ActiveNotificationsProvider {
|
) : ActiveNotificationsProvider {
|
||||||
override fun getNotificationsForSession(sessionId: SessionId): List<StatusBarNotification> {
|
override fun getNotificationsForSession(sessionId: SessionId): List<StatusBarNotification> {
|
||||||
return notificationManager.activeNotifications.filter { it.notification.group == sessionId.value }
|
return runCatchingExceptions { notificationManager.activeNotifications }
|
||||||
|
.onFailure {
|
||||||
|
Timber.e(it, "Failed to get active notifications")
|
||||||
|
}
|
||||||
|
.getOrElse { emptyList() }
|
||||||
|
.filter { it.notification.group == sessionId.value }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getMembershipNotificationForSession(sessionId: SessionId): List<StatusBarNotification> {
|
override fun getMembershipNotificationForSession(sessionId: SessionId): List<StatusBarNotification> {
|
||||||
|
|||||||
Reference in New Issue
Block a user