Add some missing runCatching to protect innerRoom access.

May fix https://sentry.tools.element.io/organizations/element/issues/533226/events/e22d3a80ab204ce392e65c989c2753ac/
This commit is contained in:
Benoit Marty 2024-09-24 16:13:39 +02:00
parent 72ca2f9eb0
commit 8b161bf72c

View file

@ -105,9 +105,13 @@ class RustMatrixRoom(
override val roomInfoFlow: Flow<MatrixRoomInfo> = mxCallbackFlow { override val roomInfoFlow: Flow<MatrixRoomInfo> = mxCallbackFlow {
launch { launch {
val initial = innerRoom.roomInfo().let(matrixRoomInfoMapper::map) runCatching { innerRoom.roomInfo() }
.getOrNull()
?.let(matrixRoomInfoMapper::map)
?.let { initial ->
channel.trySend(initial) channel.trySend(initial)
} }
}
innerRoom.subscribeToRoomInfoUpdates(object : RoomInfoListener { innerRoom.subscribeToRoomInfoUpdates(object : RoomInfoListener {
override fun call(roomInfo: RoomInfo) { override fun call(roomInfo: RoomInfo) {
channel.trySend(matrixRoomInfoMapper.map(roomInfo)) channel.trySend(matrixRoomInfoMapper.map(roomInfo))
@ -623,10 +627,14 @@ class RustMatrixRoom(
innerRoom.sendCallNotificationIfNeeded() innerRoom.sendCallNotificationIfNeeded()
} }
override suspend fun setSendQueueEnabled(enabled: Boolean) = withContext(roomDispatcher) { override suspend fun setSendQueueEnabled(enabled: Boolean) {
withContext(roomDispatcher) {
Timber.d("setSendQueuesEnabled: $enabled") Timber.d("setSendQueuesEnabled: $enabled")
runCatching {
innerRoom.enableSendQueue(enabled) innerRoom.enableSendQueue(enabled)
} }
}
}
override suspend fun saveComposerDraft(composerDraft: ComposerDraft): Result<Unit> = runCatching { override suspend fun saveComposerDraft(composerDraft: ComposerDraft): Result<Unit> = runCatching {
Timber.d("saveComposerDraft: $composerDraft into $roomId") Timber.d("saveComposerDraft: $composerDraft into $roomId")