From 4506b7d6e63709030ae0950e0956e59c9c8d42f8 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 4 Feb 2020 18:50:28 +0100 Subject: [PATCH] Fix / annoying loading to get active sessions Start with what's known locally --- .../VectorSettingsSecurityPrivacyFragment.kt | 9 +++++++++ .../features/settings/devices/DevicesViewModel.kt | 13 +++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsSecurityPrivacyFragment.kt b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsSecurityPrivacyFragment.kt index c30464ab77..0637d6d545 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsSecurityPrivacyFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsSecurityPrivacyFragment.kt @@ -426,6 +426,15 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor( // ============================================================================================================== private fun refreshMyDevice() { + session.getUserDevices(session.myUserId).map { + DeviceInfo( + user_id = session.myUserId, + deviceId = it.deviceId, + displayName = it.displayName() + ) + }.let { + refreshCryptographyPreference(it) + } // TODO Move to a ViewModel... session.getDevicesList(object : MatrixCallback { override fun onSuccess(data: DevicesListResponse) { diff --git a/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt index 9f47bdf8f0..419b6a5492 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt @@ -115,11 +115,20 @@ class DevicesViewModel @AssistedInject constructor(@Assisted initialState: Devic * It can be any mobile devices, and any browsers. */ private fun refreshDevicesList() { - if (session.isCryptoEnabled() && !session.sessionParams.credentials.deviceId.isNullOrEmpty()) { + if (!session.sessionParams.credentials.deviceId.isNullOrEmpty()) { + // display something asap + val localKnown = session.getUserDevices(session.myUserId).map { + DeviceInfo( + user_id = session.myUserId, + deviceId = it.deviceId, + displayName = it.displayName() + ) + } + setState { copy( // Keep known list if we have it, and let refresh go in backgroung - devices = this.devices.takeIf { it is Success } ?: Loading() + devices = this.devices.takeIf { it is Success } ?: Success(localKnown) ) }