diff --git a/CHANGES.md b/CHANGES.md index 645648d986..da331dc7c3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,7 +15,8 @@ Improvements 🙌: - PIN Code Improvements: Add more settings: biometrics, grace period, notification content (#1985) Bugfix 🐛: - - Long message cannot be sent/takes infinite time & blocks other messages #1397 + - Long message cannot be sent/takes infinite time & blocks other messages (#1397) + - Fix crash when wellknown are malformed, or redirect to some HTML content (reported by rageshakes) - User Verification in DM not working - Manual import of Megolm keys does back up the imported keys - Auto scrolling to the latest message when sending (#2094) diff --git a/vector/src/main/java/im/vector/app/features/raw/wellknown/ElementWellKnownMapper.kt b/vector/src/main/java/im/vector/app/features/raw/wellknown/ElementWellKnownMapper.kt index 07e496f85f..899a7d3fe6 100644 --- a/vector/src/main/java/im/vector/app/features/raw/wellknown/ElementWellKnownMapper.kt +++ b/vector/src/main/java/im/vector/app/features/raw/wellknown/ElementWellKnownMapper.kt @@ -17,6 +17,7 @@ package im.vector.app.features.raw.wellknown import com.squareup.moshi.JsonAdapter +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.internal.di.MoshiProvider object ElementWellKnownMapper { @@ -24,6 +25,6 @@ object ElementWellKnownMapper { val adapter: JsonAdapter = MoshiProvider.providesMoshi().adapter(ElementWellKnown::class.java) fun from(value: String): ElementWellKnown? { - return adapter.fromJson(value) + return tryOrNull("Unable to parse well-known data") { adapter.fromJson(value) } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt index 141247f874..44cef8f974 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt @@ -57,7 +57,7 @@ import im.vector.app.features.navigation.Navigator import im.vector.app.features.pin.PinActivity import im.vector.app.features.pin.PinCodeStore import im.vector.app.features.pin.PinMode -import im.vector.app.features.raw.wellknown.ElementWellKnownMapper +import im.vector.app.features.raw.wellknown.getElementWellknown import im.vector.app.features.raw.wellknown.isE2EByDefault import im.vector.app.features.themes.ThemeUtils import io.reactivex.android.schedulers.AndroidSchedulers @@ -153,14 +153,13 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor( disposables.add(it) } - vectorActivity.getVectorComponent() - .rawService() - .getWellknown(session.myUserId, object : MatrixCallback { - override fun onSuccess(data: String) { - findPreference(VectorPreferences.SETTINGS_CRYPTOGRAPHY_HS_ADMIN_DISABLED_E2E_DEFAULT)?.isVisible = - ElementWellKnownMapper.from(data)?.isE2EByDefault() == false - } - }) + lifecycleScope.launchWhenResumed { + findPreference(VectorPreferences.SETTINGS_CRYPTOGRAPHY_HS_ADMIN_DISABLED_E2E_DEFAULT)?.isVisible = + vectorActivity.getVectorComponent() + .rawService() + .getElementWellknown(session.myUserId) + ?.isE2EByDefault() == false + } } private val secureBackupCategory by lazy {