Update rust-sdk : make the app compiles again

This commit is contained in:
ganfra 2023-04-28 18:26:32 +02:00
parent a492177473
commit 11db3195e0
3 changed files with 36 additions and 63 deletions

View file

@ -16,12 +16,19 @@
package io.element.android.libraries.matrix.api.notification package io.element.android.libraries.matrix.api.notification
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem 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.UserId
//TODO add content
data class NotificationData( data class NotificationData(
val item: MatrixTimelineItem, val senderId: UserId,
val title: String, val eventId: EventId,
val subtitle: String?, val roomId: RoomId,
val senderAvatarUrl: String? = null,
val senderDisplayName: String? = null,
val roomAvatarUrl: String? = null,
val isDirect: Boolean,
val isEncrypted: Boolean,
val isNoisy: Boolean, val isNoisy: Boolean,
val avatarUrl: String?,
) )

View file

@ -16,35 +16,28 @@
package io.element.android.libraries.matrix.impl.notification package io.element.android.libraries.matrix.impl.notification
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.UserId
import io.element.android.libraries.matrix.api.notification.NotificationData import io.element.android.libraries.matrix.api.notification.NotificationData
import io.element.android.libraries.matrix.impl.timeline.MatrixTimelineItemMapper
import io.element.android.libraries.matrix.impl.timeline.item.event.EventMessageMapper
import io.element.android.libraries.matrix.impl.timeline.item.event.EventTimelineItemMapper
import io.element.android.libraries.matrix.impl.timeline.item.event.TimelineEventContentMapper
import io.element.android.libraries.matrix.impl.timeline.item.virtual.VirtualTimelineItemMapper
import org.matrix.rustcomponents.sdk.NotificationItem import org.matrix.rustcomponents.sdk.NotificationItem
import org.matrix.rustcomponents.sdk.use import org.matrix.rustcomponents.sdk.use
import javax.inject.Inject import javax.inject.Inject
class NotificationMapper @Inject constructor() { class NotificationMapper @Inject constructor() {
// TODO Inject and remove duplicate?
private val timelineItemFactory = MatrixTimelineItemMapper(
virtualTimelineItemMapper = VirtualTimelineItemMapper(),
eventTimelineItemMapper = EventTimelineItemMapper(
contentMapper = TimelineEventContentMapper(
eventMessageMapper = EventMessageMapper()
)
)
)
fun map(notificationItem: NotificationItem): NotificationData { fun map(notificationItem: NotificationItem): NotificationData {
return notificationItem.use { return notificationItem.use {
NotificationData( NotificationData(
item = timelineItemFactory.map(it.item), senderId = UserId(it.event.senderId()),
title = it.title, eventId = EventId(it.event.eventId()),
subtitle = it.subtitle, roomId = RoomId(it.roomId),
isNoisy = it.isNoisy, senderAvatarUrl = it.senderAvatarUrl,
avatarUrl = it.avatarUrl, senderDisplayName = it.senderDisplayName,
roomAvatarUrl = it.roomAvatarUrl,
isDirect = it.isDirect,
isEncrypted = it.isEncrypted,
isNoisy = it.isNoisy
) )
} }
} }

View file

@ -24,11 +24,6 @@ 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.SessionId
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.UserId
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.timeline.MatrixTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.push.impl.log.pushLoggerTag import io.element.android.libraries.push.impl.log.pushLoggerTag
import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableEvent
import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent import io.element.android.libraries.push.impl.notifications.model.NotifiableMessageEvent
@ -74,28 +69,28 @@ class NotifiableEventResolver @Inject constructor(
} }
).orDefault(roomId, eventId) ).orDefault(roomId, eventId)
return notificationData.asNotifiableEvent(sessionId, roomId, eventId) return notificationData.asNotifiableEvent(sessionId)
} }
} }
private fun NotificationData.asNotifiableEvent(userId: SessionId, roomId: RoomId, eventId: EventId): NotifiableEvent { private fun NotificationData.asNotifiableEvent(userId: SessionId): NotifiableEvent {
return NotifiableMessageEvent( return NotifiableMessageEvent(
sessionId = userId, sessionId = userId,
roomId = roomId, roomId = roomId,
eventId = eventId, eventId = eventId,
editedEventId = null, editedEventId = null,
canBeReplaced = true, canBeReplaced = true,
noisy = false, noisy = isNoisy,
timestamp = System.currentTimeMillis(), timestamp = System.currentTimeMillis(),
senderName = null, senderName = senderDisplayName,
senderId = null, senderId = senderId.value,
body = "Message ${eventId.value.take(8)}… in room ${roomId.value.take(8)}", body = "Message ${eventId.value.take(8)}… in room ${roomId.value.take(8)}",
imageUriString = null, imageUriString = null,
threadId = null, threadId = null,
roomName = null, roomName = null,
roomIsDirect = false, roomIsDirect = false,
roomAvatarPath = null, roomAvatarPath = roomAvatarUrl,
senderAvatarPath = null, senderAvatarPath = senderAvatarUrl,
soundName = null, soundName = null,
outGoingMessage = false, outGoingMessage = false,
outGoingMessageFailed = false, outGoingMessageFailed = false,
@ -109,33 +104,11 @@ private fun NotificationData.asNotifiableEvent(userId: SessionId, roomId: RoomId
*/ */
private fun NotificationData?.orDefault(roomId: RoomId, eventId: EventId): NotificationData { private fun NotificationData?.orDefault(roomId: RoomId, eventId: EventId): NotificationData {
return this ?: NotificationData( return this ?: NotificationData(
item = MatrixTimelineItem.Event( eventId = eventId,
event = EventTimelineItem( senderId = UserId("@user:domain"),
uniqueIdentifier = eventId.value, roomId = roomId,
eventId = eventId,
isEditable = false,
isLocal = false,
isOwn = false,
isRemote = false,
localSendState = null,
reactions = emptyList(),
sender = UserId("@user:domain"),
senderProfile = ProfileTimelineDetails.Unavailable,
timestamp = System.currentTimeMillis(),
content = MessageContent(
body = eventId.value,
inReplyTo = null,
isEdited = false,
type = TextMessageType(
body = eventId.value,
formatted = null
)
)
),
),
title = roomId.value,
subtitle = eventId.value,
isNoisy = false, isNoisy = false,
avatarUrl = null, isEncrypted = false,
isDirect = false
) )
} }