Update dependency org.matrix.rustcomponents:sdk-android to v0.1.63 (#1619)
* Update dependency org.matrix.rustcomponents:sdk-android to v0.1.63 * Update Element Call integrated APIs * Take into account the new `MessageType.Other` from the SDK --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jorge Martín <jorgem@element.io> Co-authored-by: Benoit Marty <benoit@matrix.org>
This commit is contained in:
@@ -37,6 +37,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageT
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
|
||||
@@ -131,8 +132,14 @@ class TimelineItemContentMessageFactory @Inject constructor(
|
||||
htmlDocument = messageType.formatted?.toHtmlDocument(),
|
||||
isEdited = content.isEdited,
|
||||
)
|
||||
is OtherMessageType -> TimelineItemTextContent(
|
||||
body = messageType.body,
|
||||
htmlDocument = null,
|
||||
isEdited = content.isEdited,
|
||||
)
|
||||
UnknownMessageType -> TimelineItemTextContent(
|
||||
// Display the body as a fallback
|
||||
// Display the body as a fallback, but should not happen anymore
|
||||
// (we have `OtherMessageType` now)
|
||||
body = content.body,
|
||||
htmlDocument = null,
|
||||
isEdited = content.isEdited,
|
||||
|
||||
@@ -148,7 +148,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.62"
|
||||
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.63"
|
||||
matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" }
|
||||
matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" }
|
||||
sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" }
|
||||
|
||||
@@ -37,6 +37,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessa
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.PollContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||
@@ -129,8 +130,12 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
|
||||
is AudioMessageType -> {
|
||||
sp.getString(CommonStrings.common_audio)
|
||||
}
|
||||
is OtherMessageType -> {
|
||||
messageType.body
|
||||
}
|
||||
UnknownMessageType -> {
|
||||
// Display the body as a fallback
|
||||
// Display the body as a fallback, but should not happen anymore
|
||||
// (we have `OtherMessageType` now)
|
||||
messageContent.body
|
||||
}
|
||||
is NoticeMessageType -> {
|
||||
|
||||
@@ -35,6 +35,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MembershipCha
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
||||
@@ -204,6 +205,7 @@ class DefaultRoomLastMessageFormatterTest {
|
||||
is EmoteMessageType -> "* $senderName ${type.body}"
|
||||
is TextMessageType,
|
||||
is NoticeMessageType,
|
||||
is OtherMessageType,
|
||||
UnknownMessageType -> body
|
||||
}
|
||||
Truth.assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult)
|
||||
@@ -220,6 +222,7 @@ class DefaultRoomLastMessageFormatterTest {
|
||||
is LocationMessageType -> "$senderName: Shared location"
|
||||
is TextMessageType,
|
||||
is NoticeMessageType,
|
||||
is OtherMessageType,
|
||||
UnknownMessageType -> "$senderName: $body"
|
||||
is EmoteMessageType -> "* $senderName ${type.body}"
|
||||
}
|
||||
@@ -231,6 +234,7 @@ class DefaultRoomLastMessageFormatterTest {
|
||||
is LocationMessageType -> false
|
||||
is EmoteMessageType -> false
|
||||
is TextMessageType, is NoticeMessageType -> true
|
||||
is OtherMessageType -> true
|
||||
UnknownMessageType -> true
|
||||
}
|
||||
if (shouldCreateAnnotatedString) {
|
||||
|
||||
@@ -73,3 +73,8 @@ data class TextMessageType(
|
||||
val body: String,
|
||||
val formatted: FormattedBody?
|
||||
) : MessageType
|
||||
|
||||
data class OtherMessageType(
|
||||
val msgType: String,
|
||||
val body: String,
|
||||
) : MessageType
|
||||
|
||||
@@ -69,8 +69,8 @@ import org.matrix.rustcomponents.sdk.RoomListItem
|
||||
import org.matrix.rustcomponents.sdk.RoomMember
|
||||
import org.matrix.rustcomponents.sdk.RoomMessageEventContentWithoutRelation
|
||||
import org.matrix.rustcomponents.sdk.SendAttachmentJoinHandle
|
||||
import org.matrix.rustcomponents.sdk.WidgetPermissions
|
||||
import org.matrix.rustcomponents.sdk.WidgetPermissionsProvider
|
||||
import org.matrix.rustcomponents.sdk.WidgetCapabilities
|
||||
import org.matrix.rustcomponents.sdk.WidgetCapabilitiesProvider
|
||||
import org.matrix.rustcomponents.sdk.messageEventContentFromHtml
|
||||
import org.matrix.rustcomponents.sdk.messageEventContentFromMarkdown
|
||||
import timber.log.Timber
|
||||
@@ -497,9 +497,9 @@ class RustMatrixRoom(
|
||||
RustWidgetDriver(
|
||||
widgetSettings = widgetSettings,
|
||||
room = innerRoom,
|
||||
widgetPermissionsProvider = object : WidgetPermissionsProvider {
|
||||
override fun acquirePermissions(permissions: WidgetPermissions): WidgetPermissions {
|
||||
return permissions
|
||||
widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider {
|
||||
override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities {
|
||||
return capabilities
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
@@ -28,11 +28,13 @@ import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessa
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageFormat
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
|
||||
import io.element.android.libraries.matrix.impl.media.map
|
||||
import org.matrix.rustcomponents.sdk.Message
|
||||
import org.matrix.rustcomponents.sdk.MessageType
|
||||
import org.matrix.rustcomponents.sdk.ProfileDetails
|
||||
import org.matrix.rustcomponents.sdk.RepliedToEventDetails
|
||||
import org.matrix.rustcomponents.sdk.use
|
||||
@@ -104,6 +106,9 @@ class EventMessageMapper {
|
||||
is RustMessageType.Location -> {
|
||||
LocationMessageType(type.content.body, type.content.geoUri, type.content.description)
|
||||
}
|
||||
is MessageType.Other -> {
|
||||
OtherMessageType(type.msgtype, type.body)
|
||||
}
|
||||
null -> UnknownMessageType
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettin
|
||||
appPrompt = false,
|
||||
skipLobby = true,
|
||||
confineToRoom = true,
|
||||
fonts = null,
|
||||
font = null,
|
||||
analyticsId = null
|
||||
)
|
||||
val rustWidgetSettings = newVirtualElementCallWidget(options)
|
||||
|
||||
@@ -23,13 +23,13 @@ import org.matrix.rustcomponents.sdk.WidgetSettings
|
||||
import org.matrix.rustcomponents.sdk.generateWebviewUrl
|
||||
|
||||
fun MatrixWidgetSettings.toRustWidgetSettings() = WidgetSettings(
|
||||
id = this.id,
|
||||
widgetId = this.id,
|
||||
initAfterContentLoad = this.initAfterContentLoad,
|
||||
rawUrl = this.rawUrl,
|
||||
)
|
||||
|
||||
fun MatrixWidgetSettings.Companion.fromRustWidgetSettings(widgetSettings: WidgetSettings) = MatrixWidgetSettings(
|
||||
id = widgetSettings.id,
|
||||
id = widgetSettings.widgetId,
|
||||
initAfterContentLoad = widgetSettings.initAfterContentLoad,
|
||||
rawUrl = widgetSettings.rawUrl,
|
||||
)
|
||||
|
||||
@@ -25,7 +25,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import org.matrix.rustcomponents.sdk.Room
|
||||
import org.matrix.rustcomponents.sdk.WidgetPermissionsProvider
|
||||
import org.matrix.rustcomponents.sdk.WidgetCapabilitiesProvider
|
||||
import org.matrix.rustcomponents.sdk.makeWidgetDriver
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import kotlin.coroutines.coroutineContext
|
||||
@@ -33,7 +33,7 @@ import kotlin.coroutines.coroutineContext
|
||||
class RustWidgetDriver(
|
||||
widgetSettings: MatrixWidgetSettings,
|
||||
private val room: Room,
|
||||
private val widgetPermissionsProvider: WidgetPermissionsProvider,
|
||||
private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider,
|
||||
): MatrixWidgetDriver {
|
||||
|
||||
override val incomingMessages = MutableSharedFlow<String>()
|
||||
@@ -54,7 +54,7 @@ class RustWidgetDriver(
|
||||
val coroutineScope = CoroutineScope(coroutineContext)
|
||||
coroutineScope.launch {
|
||||
// This call will suspend the coroutine while the driver is running, so it needs to be launched separately
|
||||
driverAndHandle.driver.run(room, widgetPermissionsProvider)
|
||||
driverAndHandle.driver.run(room, widgetCapabilitiesProvider)
|
||||
}
|
||||
receiveMessageJob = coroutineScope.launch(Dispatchers.IO) {
|
||||
try {
|
||||
|
||||
@@ -32,6 +32,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageTy
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
|
||||
@@ -216,6 +217,7 @@ class NotifiableEventResolver @Inject constructor(
|
||||
is TextMessageType -> messageType.body
|
||||
is VideoMessageType -> messageType.body
|
||||
is LocationMessageType -> messageType.body
|
||||
is OtherMessageType -> messageType.body
|
||||
is UnknownMessageType -> stringProvider.getString(CommonStrings.common_unsupported_event)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user