mirror of
https://github.com/bitwarden/android.git
synced 2026-06-07 06:49:07 -05:00
Create sealed class for the ItemListingType Vault (#659)
This commit is contained in:
committed by
Álison Fernandes
parent
89a818aeaa
commit
dfbfeda0e7
@@ -25,14 +25,14 @@ fun VaultItemListingEmpty(
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
when (itemListingType) {
|
||||
is VaultItemListingState.ItemListingType.Folder -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Folder -> {
|
||||
GenericNoItems(
|
||||
modifier = modifier,
|
||||
text = stringResource(id = R.string.no_items_folder),
|
||||
)
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Trash -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Trash -> {
|
||||
GenericNoItems(
|
||||
modifier = modifier,
|
||||
text = stringResource(id = R.string.no_items_trash),
|
||||
|
||||
@@ -270,87 +270,79 @@ data class VaultItemListingState(
|
||||
abstract val hasFab: Boolean
|
||||
|
||||
/**
|
||||
* A Login item listing.
|
||||
* Represents different types of vault item listings.
|
||||
*/
|
||||
data object Login : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = R.string.logins.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = true
|
||||
}
|
||||
sealed class Vault : ItemListingType() {
|
||||
|
||||
/**
|
||||
* A Card item listing.
|
||||
*/
|
||||
data object Card : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = R.string.cards.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = true
|
||||
}
|
||||
/**
|
||||
* A Login item listing.
|
||||
*/
|
||||
data object Login : Vault() {
|
||||
override val titleText: Text get() = R.string.logins.asText()
|
||||
override val hasFab: Boolean get() = true
|
||||
}
|
||||
|
||||
/**
|
||||
* An Identity item listing.
|
||||
*/
|
||||
data object Identity : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = R.string.identities.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = true
|
||||
}
|
||||
/**
|
||||
* A Card item listing.
|
||||
*/
|
||||
data object Card : Vault() {
|
||||
override val titleText: Text get() = R.string.cards.asText()
|
||||
override val hasFab: Boolean get() = true
|
||||
}
|
||||
|
||||
/**
|
||||
* A Secure Note item listing.
|
||||
*/
|
||||
data object SecureNote : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = R.string.secure_notes.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = true
|
||||
}
|
||||
/**
|
||||
* An Identity item listing.
|
||||
*/
|
||||
data object Identity : Vault() {
|
||||
override val titleText: Text get() = R.string.identities.asText()
|
||||
override val hasFab: Boolean get() = true
|
||||
}
|
||||
|
||||
/**
|
||||
* A Secure Trash item listing.
|
||||
*/
|
||||
data object Trash : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = R.string.trash.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = false
|
||||
}
|
||||
/**
|
||||
* A Secure Note item listing.
|
||||
*/
|
||||
data object SecureNote : Vault() {
|
||||
override val titleText: Text get() = R.string.secure_notes.asText()
|
||||
override val hasFab: Boolean get() = true
|
||||
}
|
||||
|
||||
/**
|
||||
* A Folder item listing.
|
||||
*
|
||||
* @property folderId the id of the folder.
|
||||
* @property folderName the name of the folder.
|
||||
*/
|
||||
data class Folder(
|
||||
val folderId: String?,
|
||||
// The folderName will always initially be an empty string
|
||||
val folderName: String = "",
|
||||
) : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = folderName.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = false
|
||||
}
|
||||
/**
|
||||
* A Secure Trash item listing.
|
||||
*/
|
||||
data object Trash : Vault() {
|
||||
override val titleText: Text get() = R.string.trash.asText()
|
||||
override val hasFab: Boolean get() = false
|
||||
}
|
||||
|
||||
/**
|
||||
* A Collection item listing.
|
||||
*
|
||||
* @property collectionId the ID of the collection.
|
||||
* @property collectionName the name of the collection.
|
||||
*/
|
||||
data class Collection(
|
||||
val collectionId: String,
|
||||
// The collectionName will always initially be an empty string
|
||||
val collectionName: String = "",
|
||||
) : ItemListingType() {
|
||||
override val titleText: Text
|
||||
get() = collectionName.asText()
|
||||
override val hasFab: Boolean
|
||||
get() = false
|
||||
/**
|
||||
* A Folder item listing.
|
||||
*
|
||||
* @property folderId the id of the folder.
|
||||
* @property folderName the name of the folder.
|
||||
*/
|
||||
data class Folder(
|
||||
val folderId: String?,
|
||||
// The folderName will always initially be an empty string
|
||||
val folderName: String = "",
|
||||
) : Vault() {
|
||||
override val titleText: Text get() = folderName.asText()
|
||||
override val hasFab: Boolean get() = false
|
||||
}
|
||||
|
||||
/**
|
||||
* A Collection item listing.
|
||||
*
|
||||
* @property collectionId the ID of the collection.
|
||||
* @property collectionName the name of the collection.
|
||||
*/
|
||||
data class Collection(
|
||||
val collectionId: String,
|
||||
// The collectionName will always initially be an empty string
|
||||
val collectionName: String = "",
|
||||
) : Vault() {
|
||||
override val titleText: Text get() = collectionName.asText()
|
||||
override val hasFab: Boolean get() = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,31 +18,31 @@ fun CipherView.determineListingPredicate(
|
||||
itemListingType: VaultItemListingState.ItemListingType,
|
||||
): Boolean =
|
||||
when (itemListingType) {
|
||||
is VaultItemListingState.ItemListingType.Card -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Card -> {
|
||||
type == CipherType.CARD && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Collection -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Collection -> {
|
||||
itemListingType.collectionId in this.collectionIds && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Folder -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Folder -> {
|
||||
folderId == itemListingType.folderId && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Identity -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Identity -> {
|
||||
type == CipherType.IDENTITY && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Login -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Login -> {
|
||||
type == CipherType.LOGIN && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.SecureNote -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.SecureNote -> {
|
||||
type == CipherType.SECURE_NOTE && deletedDate == null
|
||||
}
|
||||
|
||||
is VaultItemListingState.ItemListingType.Trash -> {
|
||||
is VaultItemListingState.ItemListingType.Vault.Trash -> {
|
||||
deletedDate != null
|
||||
}
|
||||
}
|
||||
@@ -71,25 +71,25 @@ fun VaultItemListingState.ItemListingType.updateWithAdditionalDataIfNecessary(
|
||||
collectionList: List<CollectionView>,
|
||||
): VaultItemListingState.ItemListingType =
|
||||
when (this) {
|
||||
is VaultItemListingState.ItemListingType.Card -> this
|
||||
is VaultItemListingState.ItemListingType.Collection -> copy(
|
||||
is VaultItemListingState.ItemListingType.Vault.Card -> this
|
||||
is VaultItemListingState.ItemListingType.Vault.Collection -> copy(
|
||||
collectionName = collectionList
|
||||
.find { it.id == collectionId }
|
||||
?.name
|
||||
.orEmpty(),
|
||||
)
|
||||
|
||||
is VaultItemListingState.ItemListingType.Folder -> copy(
|
||||
is VaultItemListingState.ItemListingType.Vault.Folder -> copy(
|
||||
folderName = folderList
|
||||
.find { it.id == folderId }
|
||||
?.name
|
||||
.orEmpty(),
|
||||
)
|
||||
|
||||
is VaultItemListingState.ItemListingType.Identity -> this
|
||||
is VaultItemListingState.ItemListingType.Login -> this
|
||||
is VaultItemListingState.ItemListingType.SecureNote -> this
|
||||
is VaultItemListingState.ItemListingType.Trash -> this
|
||||
is VaultItemListingState.ItemListingType.Vault.Identity -> this
|
||||
is VaultItemListingState.ItemListingType.Vault.Login -> this
|
||||
is VaultItemListingState.ItemListingType.Vault.SecureNote -> this
|
||||
is VaultItemListingState.ItemListingType.Vault.Trash -> this
|
||||
}
|
||||
|
||||
private fun List<CipherView>.toDisplayItemList(
|
||||
|
||||
@@ -8,16 +8,16 @@ import com.x8bit.bitwarden.ui.vault.model.VaultItemListingType
|
||||
*/
|
||||
fun VaultItemListingType.toItemListingType(): VaultItemListingState.ItemListingType =
|
||||
when (this) {
|
||||
is VaultItemListingType.Card -> VaultItemListingState.ItemListingType.Card
|
||||
is VaultItemListingType.Card -> VaultItemListingState.ItemListingType.Vault.Card
|
||||
is VaultItemListingType.Folder -> {
|
||||
VaultItemListingState.ItemListingType.Folder(folderId = folderId)
|
||||
VaultItemListingState.ItemListingType.Vault.Folder(folderId = folderId)
|
||||
}
|
||||
|
||||
is VaultItemListingType.Identity -> VaultItemListingState.ItemListingType.Identity
|
||||
is VaultItemListingType.Login -> VaultItemListingState.ItemListingType.Login
|
||||
is VaultItemListingType.SecureNote -> VaultItemListingState.ItemListingType.SecureNote
|
||||
is VaultItemListingType.Trash -> VaultItemListingState.ItemListingType.Trash
|
||||
is VaultItemListingType.Identity -> VaultItemListingState.ItemListingType.Vault.Identity
|
||||
is VaultItemListingType.Login -> VaultItemListingState.ItemListingType.Vault.Login
|
||||
is VaultItemListingType.SecureNote -> VaultItemListingState.ItemListingType.Vault.SecureNote
|
||||
is VaultItemListingType.Trash -> VaultItemListingState.ItemListingType.Vault.Trash
|
||||
is VaultItemListingType.Collection -> {
|
||||
VaultItemListingState.ItemListingType.Collection(collectionId = collectionId)
|
||||
VaultItemListingState.ItemListingType.Vault.Collection(collectionId = collectionId)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user