BIT-1897-vault-appearing-when-policy-set (#1064)

This commit is contained in:
Ramsey Smith
2024-02-27 10:44:21 -07:00
committed by Álison Fernandes
parent c154da6f46
commit 85faf29c7b
5 changed files with 141 additions and 13 deletions

View File

@@ -272,11 +272,10 @@ private fun VaultScreenScaffold(
.fillMaxSize()
.padding(paddingValues)
Column(modifier = outerModifier) {
val vaultFilterData = state.vaultFilterData
if (state.viewState.hasVaultFilter && vaultFilterData != null) {
state.vaultFilterDataWithFilter?.let {
VaultFilter(
selectedVaultFilterType = vaultFilterData.selectedVaultFilterType,
vaultFilterTypes = vaultFilterData.vaultFilterTypes.toImmutableList(),
selectedVaultFilterType = it.selectedVaultFilterType,
vaultFilterTypes = it.vaultFilterTypes.toImmutableList(),
onVaultFilterTypeSelect = vaultHandlers.vaultFilterTypeSelect,
topAppBarScrollBehavior = scrollBehavior,
modifier = Modifier

View File

@@ -28,6 +28,7 @@ import com.x8bit.bitwarden.ui.platform.components.model.IconRes
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterData
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
import com.x8bit.bitwarden.ui.vault.feature.vault.util.vaultFilterDataIfRequired
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toAccountSummaries
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toActiveAccountSummary
@@ -625,6 +626,12 @@ data class VaultState(
val isPullToRefreshEnabled: Boolean
get() = isPullToRefreshSettingEnabled && viewState.isPullToRefreshEnabled
/**
* VaultFilterData that the user has access to.
*/
val vaultFilterDataWithFilter: VaultFilterData?
get() = viewState.vaultFilterDataIfRequired(vaultFilterData = vaultFilterData)
/**
* Represents the specific view states for the [VaultScreen].
*/
@@ -637,11 +644,6 @@ data class VaultState(
*/
abstract val hasFab: Boolean
/**
* Determines whether or not the the Vault Filter may be shown (when applicable).
*/
abstract val hasVaultFilter: Boolean
/**
* Indicates the pull-to-refresh feature should be available during the current state.
*/
@@ -653,7 +655,6 @@ data class VaultState(
@Parcelize
data object Loading : ViewState() {
override val hasFab: Boolean get() = false
override val hasVaultFilter: Boolean get() = false
override val isPullToRefreshEnabled: Boolean get() = false
}
@@ -663,7 +664,6 @@ data class VaultState(
@Parcelize
data object NoItems : ViewState() {
override val hasFab: Boolean get() = true
override val hasVaultFilter: Boolean get() = true
override val isPullToRefreshEnabled: Boolean get() = true
}
@@ -676,7 +676,6 @@ data class VaultState(
val message: Text,
) : ViewState() {
override val hasFab: Boolean get() = false
override val hasVaultFilter: Boolean get() = false
override val isPullToRefreshEnabled: Boolean get() = true
}
@@ -708,7 +707,6 @@ data class VaultState(
val trashItemsCount: Int,
) : ViewState() {
override val hasFab: Boolean get() = true
override val hasVaultFilter: Boolean get() = true
override val isPullToRefreshEnabled: Boolean get() = true
}

View File

@@ -0,0 +1,29 @@
package com.x8bit.bitwarden.ui.vault.feature.vault.util
import com.x8bit.bitwarden.ui.vault.feature.vault.VaultState
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterData
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
/**
* Converts the given [VaultState.ViewState] to a [VaultFilterData] (if applicable).
*/
fun VaultState.ViewState.vaultFilterDataIfRequired(
vaultFilterData: VaultFilterData?,
): VaultFilterData? =
when (this) {
is VaultState.ViewState.Content,
is VaultState.ViewState.NoItems,
-> vaultFilterData?.let {
if (it.vaultFilterTypes.contains(VaultFilterType.MyVault) ||
it.vaultFilterTypes.size > 2
) {
it
} else {
null
}
}
is VaultState.ViewState.Error,
is VaultState.ViewState.Loading,
-> null
}