mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
Merge pull request #7447 from hayaksi1/fix/6518-encryption-indicator
Hide the encryption badge when key storage is set up on the server
This commit is contained in:
+11
-3
@@ -9,11 +9,14 @@
|
|||||||
package io.element.android.libraries.indicator.impl
|
package io.element.android.libraries.indicator.impl
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.setValue
|
||||||
import dev.zacsweers.metro.ContributesBinding
|
import dev.zacsweers.metro.ContributesBinding
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.indicator.api.IndicatorService
|
import io.element.android.libraries.indicator.api.IndicatorService
|
||||||
@@ -43,12 +46,17 @@ class DefaultIndicatorService(
|
|||||||
override fun showSettingChatBackupIndicator(): State<Boolean> {
|
override fun showSettingChatBackupIndicator(): State<Boolean> {
|
||||||
val backupState by encryptionService.backupStateStateFlow.collectAsState()
|
val backupState by encryptionService.backupStateStateFlow.collectAsState()
|
||||||
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
|
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
|
||||||
|
var doesBackupExistOnServer by remember { mutableStateOf<Boolean?>(null) }
|
||||||
|
|
||||||
|
LaunchedEffect(backupState) {
|
||||||
|
if (backupState == BackupState.UNKNOWN) {
|
||||||
|
doesBackupExistOnServer = encryptionService.doesBackupExistOnServer().getOrNull()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return remember {
|
return remember {
|
||||||
derivedStateOf {
|
derivedStateOf {
|
||||||
val showForBackup = backupState in listOf(
|
val showForBackup = backupState == BackupState.UNKNOWN && doesBackupExistOnServer != true
|
||||||
BackupState.UNKNOWN,
|
|
||||||
)
|
|
||||||
val showForRecovery = recoveryState in listOf(
|
val showForRecovery = recoveryState in listOf(
|
||||||
RecoveryState.DISABLED,
|
RecoveryState.DISABLED,
|
||||||
RecoveryState.INCOMPLETE,
|
RecoveryState.INCOMPLETE,
|
||||||
|
|||||||
+22
-2
@@ -42,8 +42,10 @@ class DefaultIndicatorServiceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test - showSettingChatBackupIndicator is true when BackupState is UNKNOWN`() = runTest {
|
fun `test - showSettingChatBackupIndicator is true when BackupState is UNKNOWN and no backup exists on the server`() = runTest {
|
||||||
val encryptionService = FakeEncryptionService()
|
val encryptionService = FakeEncryptionService().apply {
|
||||||
|
givenDoesBackupExistOnServerResult(Result.success(false))
|
||||||
|
}
|
||||||
val sessionVerificationService = FakeSessionVerificationService()
|
val sessionVerificationService = FakeSessionVerificationService()
|
||||||
val sut = DefaultIndicatorService(
|
val sut = DefaultIndicatorService(
|
||||||
sessionVerificationService = sessionVerificationService,
|
sessionVerificationService = sessionVerificationService,
|
||||||
@@ -61,6 +63,24 @@ class DefaultIndicatorServiceTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test - showSettingChatBackupIndicator is false when BackupState is UNKNOWN but a backup exists on the server`() = runTest {
|
||||||
|
val encryptionService = FakeEncryptionService().apply {
|
||||||
|
givenDoesBackupExistOnServerResult(Result.success(true))
|
||||||
|
}
|
||||||
|
val sessionVerificationService = FakeSessionVerificationService()
|
||||||
|
val sut = DefaultIndicatorService(
|
||||||
|
sessionVerificationService = sessionVerificationService,
|
||||||
|
encryptionService = encryptionService,
|
||||||
|
)
|
||||||
|
moleculeFlow(RecompositionMode.Immediate) {
|
||||||
|
sut.showSettingChatBackupIndicator().value
|
||||||
|
}.test {
|
||||||
|
assertThat(awaitItem()).isTrue()
|
||||||
|
assertThat(awaitItem()).isFalse()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test - showSettingChatBackupIndicator is true when recoveryState is DISABLED`() = runTest {
|
fun `test - showSettingChatBackupIndicator is true when recoveryState is DISABLED`() = runTest {
|
||||||
val encryptionService = FakeEncryptionService()
|
val encryptionService = FakeEncryptionService()
|
||||||
|
|||||||
Reference in New Issue
Block a user