Sync notifications using WorkManager (#5545)
* Initial implementation of notification sync using `WorkManager` * Use custom `MetroWorkerFactory` to allow assisted injection in WorkManager Workers * Add tests for `FetchNotificationWorker`. Create `FakeNotificationResolverQueue` to help testing. * Add more tests, fix Konsist checks * Add tests for `SyncNotificationWorkManagerRequest` * Simplify `FakeNotificationResolverQueue`
This commit is contained in:
parent
f3d75ee85c
commit
ebe94f873e
38 changed files with 968 additions and 98 deletions
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.push.test.notifications
|
||||
|
||||
import io.element.android.libraries.push.api.push.NotificationEventRequest
|
||||
import io.element.android.libraries.push.impl.notifications.NotificationResolverQueue
|
||||
import io.element.android.libraries.push.impl.notifications.model.ResolvedPushEvent
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
|
||||
class FakeNotificationResolverQueue(
|
||||
private val processingLambda: suspend (NotificationEventRequest) -> Result<ResolvedPushEvent>,
|
||||
) : NotificationResolverQueue {
|
||||
override val results = MutableSharedFlow<Pair<List<NotificationEventRequest>, Map<NotificationEventRequest, Result<ResolvedPushEvent>>>>(replay = 1)
|
||||
|
||||
override suspend fun enqueue(request: NotificationEventRequest) {
|
||||
results.emit(listOf(request) to mapOf(request to processingLambda(request)))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue