diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo052.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo052.kt index 9ec9df1db1..42a25b940d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo052.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo052.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 New Vector Ltd + * Copyright (c) 2023 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/devices/DeviceListBottomSheetViewModel.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/devices/DeviceListBottomSheetViewModel.kt index f8ec3f9c0c..c3281858f0 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/devices/DeviceListBottomSheetViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/devices/DeviceListBottomSheetViewModel.kt @@ -71,7 +71,7 @@ class DeviceListBottomSheetViewModel @AssistedInject constructor( userId = userId, allowDeviceAction = args.allowDeviceAction, userItem = session.getUserOrDefault(userId).toMatrixItem(), - myDeviceId = session.sessionParams.deviceId ?: "", + myDeviceId = session.sessionParams.deviceId, ) } } 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 f4d7dc4046..d9bd315de7 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 @@ -69,9 +69,11 @@ import im.vector.app.features.pin.PinMode import im.vector.app.features.raw.wellknown.getElementWellknown import im.vector.app.features.raw.wellknown.isE2EByDefault import im.vector.app.features.themes.ThemeUtils +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import me.gujun.android.span.span import org.matrix.android.sdk.api.extensions.getFingerprintHumanReadable import org.matrix.android.sdk.api.raw.RawService @@ -175,9 +177,6 @@ class VectorSettingsSecurityPrivacyFragment : override fun onResume() { super.onResume() - // My device name may have been updated - refreshMyDevice() - refreshXSigningStatus() session.liveSecretSynchronisationInfo() .onEach { refresh4SSection(it) @@ -186,10 +185,10 @@ class VectorSettingsSecurityPrivacyFragment : .launchIn(viewLifecycleOwner.lifecycleScope) viewLifecycleOwner.lifecycleScope.launch { - findPreference(VectorPreferences.SETTINGS_CRYPTOGRAPHY_HS_ADMIN_DISABLED_E2E_DEFAULT)?.isVisible = - rawService - .getElementWellknown(session.sessionParams) - ?.isE2EByDefault() == false + findPreference(VectorPreferences.SETTINGS_CRYPTOGRAPHY_HS_ADMIN_DISABLED_E2E_DEFAULT)?.isVisible = + rawService + .getElementWellknown(session.sessionParams) + ?.isE2EByDefault() == false } } @@ -288,7 +287,18 @@ class VectorSettingsSecurityPrivacyFragment : true } - refreshXSigningStatus() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + refreshXSigningStatus() + } + } + + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + // My device name may have been updated + refreshMyDevice() + } + } secureBackupPreference.icon = activity?.let { ThemeUtils.tintDrawable( @@ -349,13 +359,13 @@ class VectorSettingsSecurityPrivacyFragment : } // Todo this should be refactored and use same state as 4S section - private fun refreshXSigningStatus() { - lifecycleScope.launchWhenResumed { - val crossSigningKeys = session.cryptoService().crossSigningService().getMyCrossSigningKeys() - val xSigningIsEnableInAccount = crossSigningKeys != null - val xSigningKeysAreTrusted = session.cryptoService().crossSigningService().checkUserTrust(session.myUserId).isVerified() - val xSigningKeyCanSign = session.cryptoService().crossSigningService().canCrossSign() + private suspend fun refreshXSigningStatus() { + val crossSigningKeys = session.cryptoService().crossSigningService().getMyCrossSigningKeys() + val xSigningIsEnableInAccount = crossSigningKeys != null + val xSigningKeysAreTrusted = session.cryptoService().crossSigningService().checkUserTrust(session.myUserId).isVerified() + val xSigningKeyCanSign = session.cryptoService().crossSigningService().canCrossSign() + withContext(Dispatchers.Main) { when { xSigningKeyCanSign -> { mCrossSigningStatePreference.setIcon(R.drawable.ic_shield_trusted) @@ -623,19 +633,21 @@ class VectorSettingsSecurityPrivacyFragment : // devices list // ============================================================================================================== - private fun refreshMyDevice() { - viewLifecycleOwner.lifecycleScope.launchWhenResumed { - session.cryptoService().getUserDevices(session.myUserId).map { - DeviceInfo( - userId = session.myUserId, - deviceId = it.deviceId, - displayName = it.displayName() - ) - }.let { + private suspend fun refreshMyDevice() { + session.cryptoService().getUserDevices(session.myUserId).map { + DeviceInfo( + userId = session.myUserId, + deviceId = it.deviceId, + displayName = it.displayName() + ) + }.let { + withContext(Dispatchers.Main) { refreshCryptographyPreference(it) } - // TODO Move to a ViewModel... - val devicesList = session.cryptoService().fetchDevicesList() + } + // TODO Move to a ViewModel... + val devicesList = session.cryptoService().fetchDevicesList() + withContext(Dispatchers.Main) { refreshCryptographyPreference(devicesList) } }