Move SecretsSynchronisationInfo to its file

And do some other cleanup
This commit is contained in:
Benoit Marty 2020-07-11 12:57:20 +02:00
parent aa1843774a
commit de5f182f29
3 changed files with 33 additions and 15 deletions

View File

@ -17,6 +17,7 @@
package im.vector.matrix.rx package im.vector.matrix.rx
import androidx.paging.PagedList import androidx.paging.PagedList
import im.vector.matrix.android.api.extensions.orFalse
import im.vector.matrix.android.api.query.QueryStringValue import im.vector.matrix.android.api.query.QueryStringValue
import im.vector.matrix.android.api.session.Session import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.api.session.crypto.crosssigning.KEYBACKUP_SECRET_SSSS_NAME import im.vector.matrix.android.api.session.crypto.crosssigning.KEYBACKUP_SECRET_SSSS_NAME
@ -172,16 +173,6 @@ class RxSession(private val session: Session) {
} }
} }
data class SecretsSynchronisationInfo(
val isBackupSetup: Boolean = false,
val isCrossSigningEnabled: Boolean = false,
val isCrossSigningTrusted: Boolean = false,
val allPrivateKeysKnown: Boolean = false,
val megolmBackupAvailable: Boolean = false,
val megolmSecretKnown: Boolean = false,
val isMegolmKeyIn4S: Boolean = false
)
fun liveSecretSynchronisationInfo(): Observable<SecretsSynchronisationInfo> { fun liveSecretSynchronisationInfo(): Observable<SecretsSynchronisationInfo> {
return Observable.combineLatest<List<UserAccountData>, Optional<MXCrossSigningInfo>, Optional<PrivateKeysInfo>, SecretsSynchronisationInfo>( return Observable.combineLatest<List<UserAccountData>, Optional<MXCrossSigningInfo>, Optional<PrivateKeysInfo>, SecretsSynchronisationInfo>(
liveAccountData(setOf(MASTER_KEY_SSSS_NAME, USER_SIGNING_KEY_SSSS_NAME, SELF_SIGNING_KEY_SSSS_NAME, KEYBACKUP_SECRET_SSSS_NAME)), liveAccountData(setOf(MASTER_KEY_SSSS_NAME, USER_SIGNING_KEY_SSSS_NAME, SELF_SIGNING_KEY_SSSS_NAME, KEYBACKUP_SECRET_SSSS_NAME)),
@ -192,9 +183,9 @@ class RxSession(private val session: Session) {
val is4SSetup = session.sharedSecretStorageService.isRecoverySetup() val is4SSetup = session.sharedSecretStorageService.isRecoverySetup()
val isCrossSigningEnabled = crossSigningInfo.getOrNull() != null val isCrossSigningEnabled = crossSigningInfo.getOrNull() != null
val isCrossSigningTrusted = crossSigningInfo.getOrNull()?.isTrusted() == true val isCrossSigningTrusted = crossSigningInfo.getOrNull()?.isTrusted() == true
val allPrivateKeysKnown = pInfo.getOrNull()?.master != null val allPrivateKeysKnown = pInfo.getOrNull()
&& pInfo.getOrNull()?.selfSigned != null ?.let { it.master != null && it.selfSigned != null && it.user != null }
&& pInfo.getOrNull()?.user != null .orFalse()
val keysBackupService = session.cryptoService().keysBackupService() val keysBackupService = session.cryptoService().keysBackupService()
val currentBackupVersion = keysBackupService.currentBackupVersion val currentBackupVersion = keysBackupService.currentBackupVersion

View File

@ -0,0 +1,27 @@
/*
* Copyright (c) 2020 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.matrix.rx
data class SecretsSynchronisationInfo(
val isBackupSetup: Boolean,
val isCrossSigningEnabled: Boolean,
val isCrossSigningTrusted: Boolean,
val allPrivateKeysKnown: Boolean,
val megolmBackupAvailable: Boolean,
val megolmSecretKnown: Boolean,
val isMegolmKeyIn4S: Boolean
)

View File

@ -33,7 +33,7 @@ import im.vector.matrix.android.internal.crypto.crosssigning.isVerified
import im.vector.matrix.android.internal.crypto.model.ImportRoomKeysResult import im.vector.matrix.android.internal.crypto.model.ImportRoomKeysResult
import im.vector.matrix.android.internal.crypto.model.rest.DeviceInfo import im.vector.matrix.android.internal.crypto.model.rest.DeviceInfo
import im.vector.matrix.android.internal.crypto.model.rest.DevicesListResponse import im.vector.matrix.android.internal.crypto.model.rest.DevicesListResponse
import im.vector.matrix.rx.RxSession import im.vector.matrix.rx.SecretsSynchronisationInfo
import im.vector.matrix.rx.rx import im.vector.matrix.rx.rx
import im.vector.riotx.R import im.vector.riotx.R
import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.di.ActiveSessionHolder
@ -128,7 +128,7 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor(
disposables.clear() disposables.clear()
} }
private fun refresh4SSection(state: RxSession.SecretsSynchronisationInfo) { private fun refresh4SSection(state: SecretsSynchronisationInfo) {
secureBackupCategory?.isVisible = false secureBackupCategory?.isVisible = false
// it's a lot of if / else if / else // it's a lot of if / else if / else