diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index bd65b2634d..5c4d29a67e 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -39,6 +39,7 @@ import io.element.android.features.roomlist.impl.search.RoomListSearchEvents import io.element.android.features.roomlist.impl.search.RoomListSearchState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState import io.element.android.libraries.featureflag.api.FeatureFlagService @@ -218,7 +219,10 @@ class RoomListPresenter @Inject constructor( } } val needsSlidingSyncMigration by produceState(false) { - value = client.isNativeSlidingSyncSupported() && !client.isUsingNativeSlidingSync() + value = runCatching { + // Note: this can fail when the session is destroyed from another client. + client.isNativeSlidingSyncSupported() && !client.isUsingNativeSlidingSync() + }.getOrNull().orFalse() } return when { showEmpty -> RoomListContentState.Empty diff --git a/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt b/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt index 7a87babb69..9b984d6613 100644 --- a/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt +++ b/libraries/network/src/main/kotlin/io/element/android/libraries/network/interceptors/FormattedJsonHttpLogger.kt @@ -34,6 +34,11 @@ internal class FormattedJsonHttpLogger( // It can be only the case if we log the bodies of Http requests. if (level != HttpLoggingInterceptor.Level.BODY) return + if (message.length > 100_000) { + Timber.d("Content is too long (${message.length} chars) to be formatted as JSON") + return + } + if (message.startsWith("{")) { // JSON Detected try {