Fix crash when trying to get active notifications (#5085)
Sometimes something goes wrong when unmarshalling them
This commit is contained in:
parent
07edaa3dcb
commit
9509ad5170
1 changed files with 8 additions and 1 deletions
|
|
@ -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> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue