Commit graph

1 commit

Author SHA1 Message Date
SpiritCroc
292020e95d Fix some notifications never getting dismissed
Persisting notification info fails for non-null Uris:

E NotificationEventPersistence: ## Failed to save cached notification info
E NotificationEventPersistence: java.io.NotSerializableException: android.net.Uri$HierarchicalUri
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
E NotificationEventPersistence: 	at java.util.ArrayList.writeObject(ArrayList.java:762)
E NotificationEventPersistence: 	at java.lang.reflect.Method.invoke(Native Method)
E NotificationEventPersistence: 	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1036)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
E NotificationEventPersistence: 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
E NotificationEventPersistence: 	at org.matrix.android.sdk.internal.session.securestorage.SecretStoringUtils.saveSecureObjectM(SecretStoringUtils.kt:283)
E NotificationEventPersistence: 	at org.matrix.android.sdk.internal.session.securestorage.SecretStoringUtils.securelyStoreObject(SecretStoringUtils.kt:150)
E NotificationEventPersistence: 	at org.matrix.android.sdk.internal.session.securestorage.DefaultSecureStorageService.securelyStoreObject(DefaultSecureStorageService.kt:27)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationEventPersistence.persistEvents(NotificationEventPersistence.kt:58)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationDrawerManager$persistEvents$1.invoke(NotificationDrawerManager.kt:183)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationDrawerManager$persistEvents$1.invoke(NotificationDrawerManager.kt:182)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationState.queuedEvents(NotificationState.kt:55)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationDrawerManager.persistEvents(NotificationDrawerManager.kt:182)
E NotificationEventPersistence: 	at im.vector.app.features.notifications.NotificationDrawerManager.refreshNotificationDrawerBg(NotificationDrawerManager.kt:177)

Accordingly, if a notification for an image is shown, and the
notification state is loaded from storage later, none of the previously
shown notifications will get dismissed once read.

Likely addresses https://github.com/vector-im/element-android/issues/4862.

Change-Id: I2d6be497e8b92e770b680e16e42b3610add57323
2022-05-30 13:06:09 +02:00