Update dependency org.matrix.rustcomponents:sdk-android to v0.1.38 (#1015)

* Update dependency org.matrix.rustcomponents:sdk-android to v0.1.38

* Fix API breaks

* Use `roomListItem.avatarUrl` if possible

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
This commit is contained in:
renovate[bot]
2023-08-01 12:29:36 +02:00
committed by GitHub
parent e453b984ef
commit acd2623598
5 changed files with 17 additions and 13 deletions

View File

@@ -145,7 +145,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" }
molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" }
timber = "com.jakewharton.timber:timber:5.0.1"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.37"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.38"
sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" }
sqldelight-driver-jvm = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" }
sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" }

View File

@@ -20,6 +20,7 @@ import io.element.android.libraries.core.bool.orFalse
import io.element.android.libraries.matrix.api.core.EventId
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.UserId
import io.element.android.libraries.matrix.api.notification.NotificationContent
import io.element.android.libraries.matrix.api.notification.NotificationData
import io.element.android.libraries.matrix.api.room.RoomMembershipState
@@ -39,6 +40,8 @@ class NotificationMapper(
roomId: RoomId,
notificationItem: NotificationItem
): NotificationData {
notificationItem.event.use { (it as NotificationEvent.Timeline).event }
val senderId = UserId(notificationItem.senderInfo.senderId)
return notificationItem.use { item ->
NotificationData(
eventId = eventId,
@@ -50,8 +53,8 @@ class NotificationMapper(
isDirect = item.roomInfo.isDirect,
isEncrypted = item.roomInfo.isEncrypted.orFalse(),
isNoisy = item.isNoisy.orFalse(),
timestamp = item.timestamp() ?: clock.epochMillis(),
content = item.event.use(notificationContentMapper::map),
timestamp = item.timestamp(clock),
content = item.event.use { notificationContentMapper.map(senderId, it) },
contentUrl = null,
)
}
@@ -63,9 +66,9 @@ class NotificationContentMapper(
) {
private val timelineEventToNotificationContentMapper = TimelineEventToNotificationContentMapper()
fun map(notificationEvent: NotificationEvent): NotificationContent =
fun map(senderId: UserId, notificationEvent: NotificationEvent): NotificationContent =
when (notificationEvent) {
is NotificationEvent.Timeline -> timelineEventToNotificationContentMapper.map(notificationEvent.event)
is NotificationEvent.Timeline -> timelineEventToNotificationContentMapper.map(senderId, notificationEvent.event)
is NotificationEvent.Invite -> NotificationContent.StateEvent.RoomMemberContent(
userId = sessionId.value,
membershipState = RoomMembershipState.INVITE,
@@ -73,6 +76,8 @@ class NotificationContentMapper(
}
}
private fun NotificationItem.timestamp(): Long? {
return (this.event as? NotificationEvent.Timeline)?.event?.timestamp()?.toLong()
private fun NotificationItem.timestamp(clock: SystemClock): Long {
// FIXME we can't get the timestamp from the notification item anymore, so we need to fake it
// return (this.event as? NotificationEvent.Timeline)?.event?.timestamp()?.toLong()
return clock.epochMillis()
}

View File

@@ -42,7 +42,7 @@ class RustNotificationService(
filterByPushRules: Boolean,
): Result<NotificationData?> = withContext(dispatchers.io) {
runCatching {
val item = notificationClient.getNotificationWithSlidingSync(roomId.value, eventId.value)
val item = notificationClient.getNotification(roomId.value, eventId.value)
item?.use {
notificationMapper.map(eventId, roomId, it)
}

View File

@@ -22,16 +22,15 @@ import io.element.android.libraries.matrix.impl.room.RoomMemberMapper
import io.element.android.libraries.matrix.impl.timeline.item.event.EventMessageMapper
import org.matrix.rustcomponents.sdk.MessageLikeEventContent
import org.matrix.rustcomponents.sdk.StateEventContent
import org.matrix.rustcomponents.sdk.TimelineEvent
import org.matrix.rustcomponents.sdk.TimelineEventType
import org.matrix.rustcomponents.sdk.use
import javax.inject.Inject
class TimelineEventToNotificationContentMapper @Inject constructor() {
fun map(timelineEvent: TimelineEvent): NotificationContent {
return timelineEvent.use {
it.eventType().toContent(senderId = UserId(timelineEvent.senderId()))
fun map(senderId: UserId, timelineEventType: TimelineEventType): NotificationContent {
return timelineEventType.use {
it.toContent(senderId = senderId)
}
}
}

View File

@@ -140,7 +140,7 @@ class RustMatrixRoom(
override val avatarUrl: String?
get() {
return innerRoom.avatarUrl()
return roomListItem.avatarUrl() ?: innerRoom.avatarUrl()
}
override val isEncrypted: Boolean