fixing reading notification on other session not always being taken into account
- the sync wasn't being triggered for long enough, now we're waiting for 60 seconds or until the unread change
This commit is contained in:
parent
6e2e377e51
commit
7a10ae3232
|
@ -28,6 +28,7 @@ class NotificationsModule(
|
|||
fun syncService() = syncService
|
||||
fun credentialProvider() = credentialsStore
|
||||
fun firebasePushTokenUseCase() = firebasePushTokenUseCase
|
||||
fun roomStore() = roomStore
|
||||
fun notificationsUseCase() = NotificationsUseCase(
|
||||
roomStore,
|
||||
NotificationRenderer(notificationManager(), NotificationFactory(iconLoader, context, intentFactory)),
|
||||
|
|
|
@ -56,11 +56,8 @@ class PushAndroidService : FirebaseMessagingService() {
|
|||
private suspend fun doSync(roomId: RoomId?, eventId: EventId?) {
|
||||
when (roomId) {
|
||||
null -> {
|
||||
log(PUSH, "empty push payload - triggering a sync if not running")
|
||||
withTimeoutOrNull(60_000) {
|
||||
log(PUSH, "got empty event, forcing a sync")
|
||||
module.syncService().startSyncing().first()
|
||||
} ?: log(PUSH, "timed out waiting for sync")
|
||||
log(PUSH, "empty push payload - keeping sync alive until unread changes")
|
||||
waitForUnreadChange(60_000) ?: log(PUSH, "timed out waiting for sync")
|
||||
}
|
||||
else -> {
|
||||
log(PUSH, "push with eventId payload - keeping sync alive until the event shows up in the sync response")
|
||||
|
@ -82,4 +79,12 @@ class PushAndroidService : FirebaseMessagingService() {
|
|||
}
|
||||
}
|
||||
|
||||
private suspend fun waitForUnreadChange(timeout: Long): String? {
|
||||
return withTimeoutOrNull(timeout) {
|
||||
combine(module.syncService().startSyncing(), module.roomStore().observeUnread()) { _, unread -> unread }
|
||||
.first()
|
||||
"ignored"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue