Merge branch 'develop' into feature/valere/timeline_active_call_rendering

This commit is contained in:
Valere
2026-07-15 16:22:26 +02:00
4 changed files with 23 additions and 5 deletions
@@ -15,7 +15,7 @@ import io.element.android.libraries.matrix.api.MatrixClient
@ContributesBinding(AppScope::class)
class DefaultSessionGraphFactory(
private val appGraph: AppGraph
private val appGraph: AppGraph,
) : SessionGraphFactory {
override fun create(client: MatrixClient): Any {
return appGraph.sessionGraphFactory.create(client)
+2 -2
View File
@@ -32,7 +32,7 @@ accompanist = "0.37.3"
# Test
test_core = "1.7.0"
roborazzi = "1.64.0"
roborazzi = "1.67.0"
# Jetbrain
datetime = "0.8.0"
@@ -185,7 +185,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version
# https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt
# All new features should not be implemented in the pull request that upgrades the version, developers should
# only fix API breaks and may add some TODOs.
matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.07.13"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.07.15"
# Others
coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" }
@@ -12,6 +12,8 @@ import io.element.android.libraries.matrix.api.core.UserId
import org.matrix.rustcomponents.sdk.MembershipState
import org.matrix.rustcomponents.sdk.PowerLevel
import org.matrix.rustcomponents.sdk.RoomMember
import org.matrix.rustcomponents.sdk.UserCall
import org.matrix.rustcomponents.sdk.UserStatus
import uniffi.matrix_sdk.RoomMemberRole
internal fun aRustRoomMember(
@@ -25,6 +27,8 @@ internal fun aRustRoomMember(
role: RoomMemberRole = RoomMemberRole.USER,
membershipChangeReason: String? = null,
isServiceMember: Boolean = false,
status: UserStatus? = null,
call: UserCall? = null,
) = RoomMember(
userId = userId.value,
displayName = displayName,
@@ -36,4 +40,6 @@ internal fun aRustRoomMember(
suggestedRoleForPowerLevel = role,
membershipChangeReason = membershipChangeReason,
isServiceMember = isServiceMember,
status = status,
call = call,
)
@@ -105,13 +105,21 @@ class NotificationBroadcastReceiverHandler(
@Suppress("unused")
private fun handleMarkAsRead(sessionId: SessionId, roomId: RoomId, threadId: ThreadId?) = appCoroutineScope.launch {
val client = matrixClientProvider.getOrRestore(sessionId).getOrNull() ?: return@launch
val isSendPublicReadReceiptsEnabled = sessionPreferencesStore.get(sessionId, this).isSendPublicReadReceiptsEnabled().first()
val isSendPublicReadReceiptsEnabled = sessionPreferencesStore.get(
sessionId = sessionId,
// Make sure `sessionCoroutineScope` is used here, otherwise we'll have several instances using different coroutines,
// and it will not work as expected.
sessionCoroutineScope = client.sessionCoroutineScope,
).isSendPublicReadReceiptsEnabled().first()
val receiptType = if (isSendPublicReadReceiptsEnabled) {
ReceiptType.READ
} else {
ReceiptType.READ_PRIVATE
}
val room = client.getJoinedRoom(roomId) ?: return@launch
val (room, needsDestroy) = activeRoomsHolder.getActiveRoomMatching(sessionId, roomId)?.let { it to false }
?: client.getJoinedRoom(roomId)?.let { it to true }
?: return@launch
val timeline = if (threadId != null) {
room.createTimeline(CreateTimelineParams.Threaded(threadId)).getOrNull()
} else {
@@ -131,6 +139,10 @@ class NotificationBroadcastReceiverHandler(
if (timeline?.mode != Timeline.Mode.Live) {
timeline?.close()
}
if (needsDestroy) {
room.destroy()
}
}
private fun handleSmartReply(