Browse Source

Update the Rust SDK to v0.1.9 (#318)

* Update the Rust SDK to v0.1.7.

* Try to have the same setup for the build apk job and maestro.

* Add option to run maestro manually.

* Update to v0.1.9 (0.1.7 and 0.1.8 were broken in x86_64).
test/jme/compound-poc
Jorge Martin Espinosa 1 year ago committed by GitHub
parent
commit
97917e7a2d
  1. 7
      .github/workflows/maestro.yml
  2. 2
      gradle/libs.versions.toml
  3. 3
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt
  4. 3
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  5. 2
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt
  6. 7
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt
  7. 12
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt

7
.github/workflows/maestro.yml

@ -3,6 +3,7 @@ name: Maestro
# Run this flow only on pull request, and only when the pull request has been approved, to limit our usage of maestro cloud. # Run this flow only on pull request, and only when the pull request has been approved, to limit our usage of maestro cloud.
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-when-a-pull-request-is-approved # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-when-a-pull-request-is-approved
on: on:
workflow_dispatch:
pull_request_review: pull_request_review:
types: [submitted] types: [submitted]
@ -35,6 +36,12 @@ jobs:
java-version: '17' java-version: '17'
- name: Assemble debug APK - name: Assemble debug APK
run: ./gradlew assembleDebug $CI_GRADLE_ARG_PROPERTIES run: ./gradlew assembleDebug $CI_GRADLE_ARG_PROPERTIES
- name: Upload debug APKs
uses: actions/upload-artifact@v3
with:
name: elementx-debug
path: |
app/build/outputs/apk/debug/*.apk
- uses: mobile-dev-inc/action-maestro-cloud@v1.3.1 - uses: mobile-dev-inc/action-maestro-cloud@v1.3.1
with: with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }} api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}

2
gradle/libs.versions.toml

@ -129,7 +129,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.5" matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.9"
sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" } 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-driver-jvm = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" }
sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" } sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" }

3
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/EventContent.kt

@ -16,6 +16,7 @@
package io.element.android.libraries.matrix.api.timeline.item.event package io.element.android.libraries.matrix.api.timeline.item.event
import io.element.android.libraries.matrix.api.core.EventId
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.media.AudioInfo import io.element.android.libraries.matrix.api.media.AudioInfo
import io.element.android.libraries.matrix.api.media.FileInfo import io.element.android.libraries.matrix.api.media.FileInfo
@ -26,7 +27,7 @@ sealed interface EventContent
data class MessageContent( data class MessageContent(
val body: String, val body: String,
val inReplyTo: UserId?, val inReplyTo: EventId?,
val isEdited: Boolean, val isEdited: Boolean,
val type: MessageType? val type: MessageType?
) : EventContent ) : EventContent

3
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

@ -114,7 +114,6 @@ class RustMatrixClient constructor(
) )
.filters(slidingSyncFilters) .filters(slidingSyncFilters)
.name(name = "CurrentlyVisibleRooms") .name(name = "CurrentlyVisibleRooms")
.sendUpdatesForItems(true)
.syncMode(mode = SlidingSyncMode.SELECTIVE) .syncMode(mode = SlidingSyncMode.SELECTIVE)
.addRange(0u, 20u) .addRange(0u, 20u)
.use { .use {
@ -125,7 +124,7 @@ class RustMatrixClient constructor(
.slidingSync() .slidingSync()
.homeserver("https://slidingsync.lab.matrix.org") .homeserver("https://slidingsync.lab.matrix.org")
.withCommonExtensions() .withCommonExtensions()
.coldCache("ElementX") .storageKey("ElementX")
.addList(visibleRoomsSlidingSyncList) .addList(visibleRoomsSlidingSyncList)
.use { .use {
it.build() it.build()

2
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt

@ -59,7 +59,7 @@ internal class RustRoomSummaryDataSource(
coroutineScope.launch { coroutineScope.launch {
updateRoomSummaries { updateRoomSummaries {
addAll( addAll(
slidingSyncList.currentRoomsList().map(::buildSummaryForRoomListEntry) slidingSyncList.currentRoomList().map(::buildSummaryForRoomListEntry)
) )
} }
} }

7
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt

@ -16,16 +16,17 @@
package io.element.android.libraries.matrix.impl.timeline.item.event package io.element.android.libraries.matrix.impl.timeline.item.event
import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.asEventId
import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.EmoteMessageType import io.element.android.libraries.matrix.api.timeline.item.event.EmoteMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType import io.element.android.libraries.matrix.api.timeline.item.event.FileMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.FormattedBody import io.element.android.libraries.matrix.api.timeline.item.event.FormattedBody
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.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.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.MessageContent
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
@ -69,7 +70,7 @@ class EventMessageMapper {
} }
MessageContent( MessageContent(
body = message.body(), body = message.body(),
inReplyTo = message.inReplyTo()?.let { UserId(it) }, inReplyTo = message.inReplyTo()?.eventId?.asEventId(),
isEdited = message.isEdited(), isEdited = message.isEdited(),
type = type type = type
) )

12
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt

@ -25,7 +25,7 @@ import io.element.android.libraries.matrix.api.timeline.item.event.ProfileTimeli
import org.matrix.rustcomponents.sdk.Reaction import org.matrix.rustcomponents.sdk.Reaction
import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState import org.matrix.rustcomponents.sdk.EventSendState as RustEventSendState
import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem import org.matrix.rustcomponents.sdk.EventTimelineItem as RustEventTimelineItem
import org.matrix.rustcomponents.sdk.ProfileTimelineDetails as RustProfileTimelineDetails import org.matrix.rustcomponents.sdk.ProfileDetails as RustProfileDetails
class EventTimelineItemMapper(private val contentMapper: TimelineEventContentMapper = TimelineEventContentMapper()) { class EventTimelineItemMapper(private val contentMapper: TimelineEventContentMapper = TimelineEventContentMapper()) {
@ -47,12 +47,12 @@ class EventTimelineItemMapper(private val contentMapper: TimelineEventContentMap
} }
} }
fun RustProfileTimelineDetails.map(): ProfileTimelineDetails { fun RustProfileDetails.map(): ProfileTimelineDetails {
return when (this) { return when (this) {
RustProfileTimelineDetails.Pending -> ProfileTimelineDetails.Pending RustProfileDetails.Pending -> ProfileTimelineDetails.Pending
RustProfileTimelineDetails.Unavailable -> ProfileTimelineDetails.Unavailable RustProfileDetails.Unavailable -> ProfileTimelineDetails.Unavailable
is RustProfileTimelineDetails.Error -> ProfileTimelineDetails.Error(message) is RustProfileDetails.Error -> ProfileTimelineDetails.Error(message)
is RustProfileTimelineDetails.Ready -> ProfileTimelineDetails.Ready( is RustProfileDetails.Ready -> ProfileTimelineDetails.Ready(
displayName = displayName, displayName = displayName,
displayNameAmbiguous = displayNameAmbiguous, displayNameAmbiguous = displayNameAmbiguous,
avatarUrl = avatarUrl avatarUrl = avatarUrl

Loading…
Cancel
Save