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:
parent
007a7daa07
commit
7c5fab732b
11 changed files with 42 additions and 14 deletions
|
|
@ -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.LocationMessageType
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
|
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.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.TextMessageType
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
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.api.timeline.item.event.VideoMessageType
|
||||||
|
|
@ -131,8 +132,14 @@ class TimelineItemContentMessageFactory @Inject constructor(
|
||||||
htmlDocument = messageType.formatted?.toHtmlDocument(),
|
htmlDocument = messageType.formatted?.toHtmlDocument(),
|
||||||
isEdited = content.isEdited,
|
isEdited = content.isEdited,
|
||||||
)
|
)
|
||||||
|
is OtherMessageType -> TimelineItemTextContent(
|
||||||
|
body = messageType.body,
|
||||||
|
htmlDocument = null,
|
||||||
|
isEdited = content.isEdited,
|
||||||
|
)
|
||||||
UnknownMessageType -> TimelineItemTextContent(
|
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,
|
body = content.body,
|
||||||
htmlDocument = null,
|
htmlDocument = null,
|
||||||
isEdited = content.isEdited,
|
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" }
|
appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" }
|
||||||
molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" }
|
molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" }
|
||||||
timber = "com.jakewharton.timber:timber:5.0.1"
|
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 = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" }
|
||||||
matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", 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" }
|
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.MessageContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageType
|
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.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.PollContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent
|
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||||
|
|
@ -129,8 +130,12 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
|
||||||
is AudioMessageType -> {
|
is AudioMessageType -> {
|
||||||
sp.getString(CommonStrings.common_audio)
|
sp.getString(CommonStrings.common_audio)
|
||||||
}
|
}
|
||||||
|
is OtherMessageType -> {
|
||||||
|
messageType.body
|
||||||
|
}
|
||||||
UnknownMessageType -> {
|
UnknownMessageType -> {
|
||||||
// Display the body as a fallback
|
// Display the body as a fallback, but should not happen anymore
|
||||||
|
// (we have `OtherMessageType` now)
|
||||||
messageContent.body
|
messageContent.body
|
||||||
}
|
}
|
||||||
is NoticeMessageType -> {
|
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.MessageContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageType
|
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.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.OtherState
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimelineDetails
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
import io.element.android.libraries.matrix.api.timeline.item.event.RedactedContent
|
||||||
|
|
@ -204,6 +205,7 @@ class DefaultRoomLastMessageFormatterTest {
|
||||||
is EmoteMessageType -> "* $senderName ${type.body}"
|
is EmoteMessageType -> "* $senderName ${type.body}"
|
||||||
is TextMessageType,
|
is TextMessageType,
|
||||||
is NoticeMessageType,
|
is NoticeMessageType,
|
||||||
|
is OtherMessageType,
|
||||||
UnknownMessageType -> body
|
UnknownMessageType -> body
|
||||||
}
|
}
|
||||||
Truth.assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult)
|
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 LocationMessageType -> "$senderName: Shared location"
|
||||||
is TextMessageType,
|
is TextMessageType,
|
||||||
is NoticeMessageType,
|
is NoticeMessageType,
|
||||||
|
is OtherMessageType,
|
||||||
UnknownMessageType -> "$senderName: $body"
|
UnknownMessageType -> "$senderName: $body"
|
||||||
is EmoteMessageType -> "* $senderName ${type.body}"
|
is EmoteMessageType -> "* $senderName ${type.body}"
|
||||||
}
|
}
|
||||||
|
|
@ -231,6 +234,7 @@ class DefaultRoomLastMessageFormatterTest {
|
||||||
is LocationMessageType -> false
|
is LocationMessageType -> false
|
||||||
is EmoteMessageType -> false
|
is EmoteMessageType -> false
|
||||||
is TextMessageType, is NoticeMessageType -> true
|
is TextMessageType, is NoticeMessageType -> true
|
||||||
|
is OtherMessageType -> true
|
||||||
UnknownMessageType -> true
|
UnknownMessageType -> true
|
||||||
}
|
}
|
||||||
if (shouldCreateAnnotatedString) {
|
if (shouldCreateAnnotatedString) {
|
||||||
|
|
|
||||||
|
|
@ -73,3 +73,8 @@ data class TextMessageType(
|
||||||
val body: String,
|
val body: String,
|
||||||
val formatted: FormattedBody?
|
val formatted: FormattedBody?
|
||||||
) : MessageType
|
) : 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.RoomMember
|
||||||
import org.matrix.rustcomponents.sdk.RoomMessageEventContentWithoutRelation
|
import org.matrix.rustcomponents.sdk.RoomMessageEventContentWithoutRelation
|
||||||
import org.matrix.rustcomponents.sdk.SendAttachmentJoinHandle
|
import org.matrix.rustcomponents.sdk.SendAttachmentJoinHandle
|
||||||
import org.matrix.rustcomponents.sdk.WidgetPermissions
|
import org.matrix.rustcomponents.sdk.WidgetCapabilities
|
||||||
import org.matrix.rustcomponents.sdk.WidgetPermissionsProvider
|
import org.matrix.rustcomponents.sdk.WidgetCapabilitiesProvider
|
||||||
import org.matrix.rustcomponents.sdk.messageEventContentFromHtml
|
import org.matrix.rustcomponents.sdk.messageEventContentFromHtml
|
||||||
import org.matrix.rustcomponents.sdk.messageEventContentFromMarkdown
|
import org.matrix.rustcomponents.sdk.messageEventContentFromMarkdown
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
@ -497,9 +497,9 @@ class RustMatrixRoom(
|
||||||
RustWidgetDriver(
|
RustWidgetDriver(
|
||||||
widgetSettings = widgetSettings,
|
widgetSettings = widgetSettings,
|
||||||
room = innerRoom,
|
room = innerRoom,
|
||||||
widgetPermissionsProvider = object : WidgetPermissionsProvider {
|
widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider {
|
||||||
override fun acquirePermissions(permissions: WidgetPermissions): WidgetPermissions {
|
override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities {
|
||||||
return permissions
|
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.MessageContent
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageFormat
|
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.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.TextMessageType
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
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.api.timeline.item.event.VideoMessageType
|
||||||
import io.element.android.libraries.matrix.impl.media.map
|
import io.element.android.libraries.matrix.impl.media.map
|
||||||
import org.matrix.rustcomponents.sdk.Message
|
import org.matrix.rustcomponents.sdk.Message
|
||||||
|
import org.matrix.rustcomponents.sdk.MessageType
|
||||||
import org.matrix.rustcomponents.sdk.ProfileDetails
|
import org.matrix.rustcomponents.sdk.ProfileDetails
|
||||||
import org.matrix.rustcomponents.sdk.RepliedToEventDetails
|
import org.matrix.rustcomponents.sdk.RepliedToEventDetails
|
||||||
import org.matrix.rustcomponents.sdk.use
|
import org.matrix.rustcomponents.sdk.use
|
||||||
|
|
@ -104,6 +106,9 @@ class EventMessageMapper {
|
||||||
is RustMessageType.Location -> {
|
is RustMessageType.Location -> {
|
||||||
LocationMessageType(type.content.body, type.content.geoUri, type.content.description)
|
LocationMessageType(type.content.body, type.content.geoUri, type.content.description)
|
||||||
}
|
}
|
||||||
|
is MessageType.Other -> {
|
||||||
|
OtherMessageType(type.msgtype, type.body)
|
||||||
|
}
|
||||||
null -> UnknownMessageType
|
null -> UnknownMessageType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class DefaultCallWidgetSettingsProvider @Inject constructor() : CallWidgetSettin
|
||||||
appPrompt = false,
|
appPrompt = false,
|
||||||
skipLobby = true,
|
skipLobby = true,
|
||||||
confineToRoom = true,
|
confineToRoom = true,
|
||||||
fonts = null,
|
font = null,
|
||||||
analyticsId = null
|
analyticsId = null
|
||||||
)
|
)
|
||||||
val rustWidgetSettings = newVirtualElementCallWidget(options)
|
val rustWidgetSettings = newVirtualElementCallWidget(options)
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,13 @@ import org.matrix.rustcomponents.sdk.WidgetSettings
|
||||||
import org.matrix.rustcomponents.sdk.generateWebviewUrl
|
import org.matrix.rustcomponents.sdk.generateWebviewUrl
|
||||||
|
|
||||||
fun MatrixWidgetSettings.toRustWidgetSettings() = WidgetSettings(
|
fun MatrixWidgetSettings.toRustWidgetSettings() = WidgetSettings(
|
||||||
id = this.id,
|
widgetId = this.id,
|
||||||
initAfterContentLoad = this.initAfterContentLoad,
|
initAfterContentLoad = this.initAfterContentLoad,
|
||||||
rawUrl = this.rawUrl,
|
rawUrl = this.rawUrl,
|
||||||
)
|
)
|
||||||
|
|
||||||
fun MatrixWidgetSettings.Companion.fromRustWidgetSettings(widgetSettings: WidgetSettings) = MatrixWidgetSettings(
|
fun MatrixWidgetSettings.Companion.fromRustWidgetSettings(widgetSettings: WidgetSettings) = MatrixWidgetSettings(
|
||||||
id = widgetSettings.id,
|
id = widgetSettings.widgetId,
|
||||||
initAfterContentLoad = widgetSettings.initAfterContentLoad,
|
initAfterContentLoad = widgetSettings.initAfterContentLoad,
|
||||||
rawUrl = widgetSettings.rawUrl,
|
rawUrl = widgetSettings.rawUrl,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.matrix.rustcomponents.sdk.Room
|
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 org.matrix.rustcomponents.sdk.makeWidgetDriver
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import kotlin.coroutines.coroutineContext
|
import kotlin.coroutines.coroutineContext
|
||||||
|
|
@ -33,7 +33,7 @@ import kotlin.coroutines.coroutineContext
|
||||||
class RustWidgetDriver(
|
class RustWidgetDriver(
|
||||||
widgetSettings: MatrixWidgetSettings,
|
widgetSettings: MatrixWidgetSettings,
|
||||||
private val room: Room,
|
private val room: Room,
|
||||||
private val widgetPermissionsProvider: WidgetPermissionsProvider,
|
private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider,
|
||||||
): MatrixWidgetDriver {
|
): MatrixWidgetDriver {
|
||||||
|
|
||||||
override val incomingMessages = MutableSharedFlow<String>()
|
override val incomingMessages = MutableSharedFlow<String>()
|
||||||
|
|
@ -54,7 +54,7 @@ class RustWidgetDriver(
|
||||||
val coroutineScope = CoroutineScope(coroutineContext)
|
val coroutineScope = CoroutineScope(coroutineContext)
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
// This call will suspend the coroutine while the driver is running, so it needs to be launched separately
|
// 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) {
|
receiveMessageJob = coroutineScope.launch(Dispatchers.IO) {
|
||||||
try {
|
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.ImageMessageType
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType
|
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.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.TextMessageType
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
|
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.api.timeline.item.event.VideoMessageType
|
||||||
|
|
@ -216,6 +217,7 @@ class NotifiableEventResolver @Inject constructor(
|
||||||
is TextMessageType -> messageType.body
|
is TextMessageType -> messageType.body
|
||||||
is VideoMessageType -> messageType.body
|
is VideoMessageType -> messageType.body
|
||||||
is LocationMessageType -> messageType.body
|
is LocationMessageType -> messageType.body
|
||||||
|
is OtherMessageType -> messageType.body
|
||||||
is UnknownMessageType -> stringProvider.getString(CommonStrings.common_unsupported_event)
|
is UnknownMessageType -> stringProvider.getString(CommonStrings.common_unsupported_event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue