diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt index 30977eb05f..6f6bd9473c 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/DefaultCallWidgetProvider.kt @@ -48,7 +48,6 @@ class DefaultCallWidgetProvider @Inject constructor( ).getOrThrow() val driver = room.getWidgetDriver(widgetSettings).getOrThrow() - room.destroy() CallWidgetProvider.GetWidgetResult( driver = driver, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index da5ad50bc9..5ef34d9bed 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -595,6 +595,7 @@ class JoinedRustRoom( RustWidgetDriver( widgetSettings = widgetSettings, room = innerRoom, + joinedRustRoom = this, widgetCapabilitiesProvider = object : WidgetCapabilitiesProvider { override fun acquireCapabilities(capabilities: WidgetCapabilities): WidgetCapabilities { return getElementCallRequiredPermissions(sessionId.value, baseRoom.deviceId.value) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt index c80313f5da..b723ab194b 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/widget/RustWidgetDriver.kt @@ -9,6 +9,7 @@ package io.element.android.libraries.matrix.impl.widget import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver import io.element.android.libraries.matrix.api.widget.MatrixWidgetSettings +import io.element.android.libraries.matrix.impl.room.JoinedRustRoom import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -24,6 +25,7 @@ import kotlin.coroutines.coroutineContext class RustWidgetDriver( widgetSettings: MatrixWidgetSettings, private val room: Room, + private val joinedRustRoom: JoinedRustRoom, private val widgetCapabilitiesProvider: WidgetCapabilitiesProvider, ) : MatrixWidgetDriver { // It's important to have extra capacity here to make sure we don't drop any messages @@ -69,5 +71,6 @@ class RustWidgetDriver( override fun close() { receiveMessageJob?.cancel() driverAndHandle.driver.close() + joinedRustRoom.destroy() } }