|
|
@ -16,23 +16,30 @@ |
|
|
|
|
|
|
|
|
|
|
|
package io.element.android.libraries.matrix.impl.notification |
|
|
|
package io.element.android.libraries.matrix.impl.notification |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers |
|
|
|
import io.element.android.libraries.matrix.api.notification.NotificationData |
|
|
|
import io.element.android.libraries.matrix.api.notification.NotificationData |
|
|
|
import io.element.android.libraries.matrix.api.notification.NotificationService |
|
|
|
import io.element.android.libraries.matrix.api.notification.NotificationService |
|
|
|
|
|
|
|
import kotlinx.coroutines.withContext |
|
|
|
import java.io.File |
|
|
|
import java.io.File |
|
|
|
|
|
|
|
|
|
|
|
class RustNotificationService( |
|
|
|
class RustNotificationService( |
|
|
|
private val baseDirectory: File, |
|
|
|
private val baseDirectory: File, |
|
|
|
|
|
|
|
private val dispatchers: CoroutineDispatchers, |
|
|
|
) : NotificationService { |
|
|
|
) : NotificationService { |
|
|
|
private val notificationMapper: NotificationMapper = NotificationMapper() |
|
|
|
private val notificationMapper: NotificationMapper = NotificationMapper() |
|
|
|
|
|
|
|
|
|
|
|
override fun getNotification(userId: String, roomId: String, eventId: String): NotificationData? { |
|
|
|
override suspend fun getNotification(userId: String, roomId: String, eventId: String): Result<NotificationData?> { |
|
|
|
return org.matrix.rustcomponents.sdk.NotificationService( |
|
|
|
return withContext(dispatchers.io) { |
|
|
|
basePath = File(baseDirectory, "sessions").absolutePath, |
|
|
|
runCatching { |
|
|
|
userId = userId |
|
|
|
org.matrix.rustcomponents.sdk.NotificationService( |
|
|
|
).use { |
|
|
|
basePath = File(baseDirectory, "sessions").absolutePath, |
|
|
|
// TODO Not implemented yet, see https://github.com/matrix-org/matrix-rust-sdk/issues/1628 |
|
|
|
userId = userId |
|
|
|
it.getNotificationItem(roomId, eventId)?.let { notificationItem -> |
|
|
|
).use { |
|
|
|
notificationMapper.map(notificationItem) |
|
|
|
// TODO Not implemented yet, see https://github.com/matrix-org/matrix-rust-sdk/issues/1628 |
|
|
|
|
|
|
|
it.getNotificationItem(roomId, eventId)?.let { notificationItem -> |
|
|
|
|
|
|
|
notificationMapper.map(notificationItem) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|