Make sure any JoinedRustRoom is destroyed after use (#4678)

This commit is contained in:
Jorge Martin Espinosa
2025-05-05 16:09:07 +02:00
committed by GitHub
parent a7179b711c
commit 024aa49e60
5 changed files with 11 additions and 3 deletions

View File

@@ -241,7 +241,7 @@ class CallScreenPresenter @AssistedInject constructor(
private suspend fun MatrixClient.notifyCallStartIfNeeded(roomId: RoomId) {
if (!notifiedCallStart) {
getJoinedRoom(roomId)?.sendCallNotificationIfNeeded()
getJoinedRoom(roomId)?.use { it.sendCallNotificationIfNeeded() }
?.onSuccess { notifiedCallStart = true }
}
}

View File

@@ -47,8 +47,11 @@ class DefaultCallWidgetProvider @Inject constructor(
theme = theme,
).getOrThrow()
val driver = room.getWidgetDriver(widgetSettings).getOrThrow()
room.destroy()
CallWidgetProvider.GetWidgetResult(
driver = room.getWidgetDriver(widgetSettings).getOrThrow(),
driver = driver,
url = callUrl,
)
}

View File

@@ -86,6 +86,7 @@ class SharePresenter @AssistedInject constructor(
).isSuccess
}
.all { it }
.also { room.destroy() }
}
.all { it }
}

View File

@@ -639,9 +639,11 @@ class JoinedRustRoom(
}
}
override fun close() = destroy()
override fun destroy() {
baseRoom.destroy()
liveInnerTimeline.close()
liveInnerTimeline.destroy()
roomCoroutineScope.cancel()
}

View File

@@ -94,6 +94,8 @@ class RustBaseRoom(
}
}
override fun close() = destroy()
override fun destroy() {
innerRoom.destroy()
}