Skip to content

Commit 0beec20

Browse files
authored
Ensure that the Rust room is not closed while the driver needs it. (#4694)
1 parent 5fb0fc0 commit 0beec20

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ class DefaultCallWidgetProvider @Inject constructor(
4848
).getOrThrow()
4949

5050
val driver = room.getWidgetDriver(widgetSettings).getOrThrow()
51-
room.destroy()
5251

5352
CallWidgetProvider.GetWidgetResult(
5453
driver = driver,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ class JoinedRustRoom(
595595
RustWidgetDriver(
596596
widgetSettings = widgetSettings,
597597
room = innerRoom,
598+
joinedRustRoom = this,
598599
widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider {
599600
override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities {
600601
return getElementCallRequiredPermissions(sessionId.value, baseRoom.deviceId.value)

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package io.element.android.libraries.matrix.impl.widget
99

1010
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
1111
import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings
12+
import io.element.android.libraries.matrix.impl.room.JoinedRustRoom
1213
import kotlinx.coroutines.CoroutineScope
1314
import kotlinx.coroutines.Dispatchers
1415
import kotlinx.coroutines.Job
@@ -24,6 +25,7 @@ import kotlin.coroutines.coroutineContext
2425
class RustWidgetDriver(
2526
widgetSettings: MatrixWidgetSettings,
2627
private val room: Room,
28+
private val joinedRustRoom: JoinedRustRoom,
2729
private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider,
2830
) : MatrixWidgetDriver {
2931
// It's important to have extra capacity here to make sure we don't drop any messages
@@ -69,5 +71,6 @@ class RustWidgetDriver(
6971
override fun close() {
7072
receiveMessageJob?.cancel()
7173
driverAndHandle.driver.close()
74+
joinedRustRoom.destroy()
7275
}
7376
}

0 commit comments

Comments
 (0)