mirror of
https://github.com/bitwarden/android.git
synced 2025-03-15 18:58:59 +03:00
BIT-1351 Sorting Items by name (#823)
This commit is contained in:
parent
2dde22f762
commit
cf7f0ad7fe
7 changed files with 113 additions and 3 deletions
|
@ -57,6 +57,7 @@ import com.x8bit.bitwarden.data.vault.repository.model.UpdateCipherResult
|
|||
import com.x8bit.bitwarden.data.vault.repository.model.UpdateSendResult
|
||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultData
|
||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult
|
||||
import com.x8bit.bitwarden.data.vault.repository.util.sortAlphabetically
|
||||
import com.x8bit.bitwarden.data.vault.repository.util.toDomainsData
|
||||
import com.x8bit.bitwarden.data.vault.repository.util.toEncryptedNetworkCipher
|
||||
import com.x8bit.bitwarden.data.vault.repository.util.toEncryptedNetworkCipherResponse
|
||||
|
@ -1027,7 +1028,7 @@ class VaultRepositoryImpl(
|
|||
cipherList = it.toEncryptedSdkCipherList(),
|
||||
)
|
||||
.fold(
|
||||
onSuccess = { ciphers -> DataState.Loaded(ciphers) },
|
||||
onSuccess = { ciphers -> DataState.Loaded(ciphers.sortAlphabetically()) },
|
||||
onFailure = { throwable -> DataState.Error(throwable) },
|
||||
)
|
||||
}
|
||||
|
@ -1059,7 +1060,7 @@ class VaultRepositoryImpl(
|
|||
folderList = it.toEncryptedSdkFolderList(),
|
||||
)
|
||||
.fold(
|
||||
onSuccess = { folders -> DataState.Loaded(folders) },
|
||||
onSuccess = { folders -> DataState.Loaded(folders.sortAlphabetically()) },
|
||||
onFailure = { throwable -> DataState.Error(throwable) },
|
||||
)
|
||||
}
|
||||
|
@ -1078,7 +1079,11 @@ class VaultRepositoryImpl(
|
|||
collectionList = it.toEncryptedSdkCollectionList(),
|
||||
)
|
||||
.fold(
|
||||
onSuccess = { collections -> DataState.Loaded(collections) },
|
||||
onSuccess = { collections ->
|
||||
DataState.Loaded(
|
||||
collections.sortAlphabetically(),
|
||||
)
|
||||
},
|
||||
onFailure = { throwable -> DataState.Error(throwable) },
|
||||
)
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import com.bitwarden.core.Card
|
|||
import com.bitwarden.core.Cipher
|
||||
import com.bitwarden.core.CipherRepromptType
|
||||
import com.bitwarden.core.CipherType
|
||||
import com.bitwarden.core.CipherView
|
||||
import com.bitwarden.core.Field
|
||||
import com.bitwarden.core.FieldType
|
||||
import com.bitwarden.core.Identity
|
||||
|
@ -26,6 +27,7 @@ import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
|||
import com.x8bit.bitwarden.data.vault.datasource.network.model.UriMatchTypeJson
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* Converts a Bitwarden SDK [Cipher] object to a corresponding
|
||||
|
@ -491,3 +493,10 @@ fun FieldTypeJson.toSdkFieldType(): FieldType =
|
|||
FieldTypeJson.BOOLEAN -> FieldType.BOOLEAN
|
||||
FieldTypeJson.LINKED -> FieldType.LINKED
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts the data in alphabetical order by name.
|
||||
*/
|
||||
@JvmName("toAlphabeticallySortedCipherList")
|
||||
fun List<CipherView>.sortAlphabetically(): List<CipherView> =
|
||||
this.sortedBy { it.name.uppercase(Locale.getDefault()) }
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.x8bit.bitwarden.data.vault.repository.util
|
||||
|
||||
import com.bitwarden.core.Collection
|
||||
import com.bitwarden.core.CollectionView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* Converts a [SyncResponseJson.Collection] object to a corresponding Bitwarden SDK [Collection]
|
||||
|
@ -23,3 +25,10 @@ fun SyncResponseJson.Collection.toEncryptedSdkCollection(): Collection =
|
|||
*/
|
||||
fun List<SyncResponseJson.Collection>.toEncryptedSdkCollectionList(): List<Collection> =
|
||||
map { it.toEncryptedSdkCollection() }
|
||||
|
||||
/**
|
||||
* Sorts the data in alphabetical order by name.
|
||||
*/
|
||||
@JvmName("toAlphabeticallySortedCollectionList")
|
||||
fun List<CollectionView>.sortAlphabetically(): List<CollectionView> =
|
||||
this.sortedBy { it.name.uppercase(Locale.getDefault()) }
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package com.x8bit.bitwarden.data.vault.repository.util
|
||||
|
||||
import com.bitwarden.core.Folder
|
||||
import com.bitwarden.core.FolderView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import java.util.Locale
|
||||
|
||||
/**
|
||||
* Converts a list of [SyncResponseJson.Folder] objects to a list of corresponding
|
||||
|
@ -20,3 +22,10 @@ fun SyncResponseJson.Folder.toEncryptedSdkFolder(): Folder =
|
|||
name = name.orEmpty(),
|
||||
revisionDate = revisionDate.toInstant(),
|
||||
)
|
||||
|
||||
/**
|
||||
* Sorts the data in alphabetical order by name.
|
||||
*/
|
||||
@JvmName("toAlphabeticallySortedFolderList")
|
||||
fun List<FolderView>.sortAlphabetically(): List<FolderView> =
|
||||
this.sortedBy { it.name.uppercase(Locale.getDefault()) }
|
||||
|
|
|
@ -18,6 +18,7 @@ import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockLogin
|
|||
import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockPasswordHistory
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockSecureNote
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockUri
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkAttachment
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkCard
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkCipher
|
||||
|
@ -270,4 +271,29 @@ class VaultSdkCipherExtensionsTest {
|
|||
sdkFieldType,
|
||||
)
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `toSortAlphabetically should sort ciphers by name`() {
|
||||
val list = listOf(
|
||||
createMockCipherView(1).copy(name = "c"),
|
||||
createMockCipherView(1).copy(name = "B"),
|
||||
createMockCipherView(1).copy(name = "z"),
|
||||
createMockCipherView(1).copy(name = "A"),
|
||||
createMockCipherView(1).copy(name = "D"),
|
||||
)
|
||||
|
||||
val expected = listOf(
|
||||
createMockCipherView(1).copy(name = "A"),
|
||||
createMockCipherView(1).copy(name = "B"),
|
||||
createMockCipherView(1).copy(name = "c"),
|
||||
createMockCipherView(1).copy(name = "D"),
|
||||
createMockCipherView(1).copy(name = "z"),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
expected,
|
||||
list.sortAlphabetically(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.x8bit.bitwarden.data.vault.repository.util
|
|||
|
||||
import com.bitwarden.core.Collection
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCollectionView
|
||||
import org.junit.Test
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
|
||||
|
@ -56,4 +57,29 @@ class VaultSdkCollectionExtensionsTest {
|
|||
),
|
||||
)
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `toSortAlphabetically should sort collections by name`() {
|
||||
val list = listOf(
|
||||
createMockCollectionView(1).copy(name = "c"),
|
||||
createMockCollectionView(1).copy(name = "B"),
|
||||
createMockCollectionView(1).copy(name = "z"),
|
||||
createMockCollectionView(1).copy(name = "A"),
|
||||
createMockCollectionView(1).copy(name = "D"),
|
||||
)
|
||||
|
||||
val expected = listOf(
|
||||
createMockCollectionView(1).copy(name = "A"),
|
||||
createMockCollectionView(1).copy(name = "B"),
|
||||
createMockCollectionView(1).copy(name = "c"),
|
||||
createMockCollectionView(1).copy(name = "D"),
|
||||
createMockCollectionView(1).copy(name = "z"),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
expected,
|
||||
list.sortAlphabetically(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.x8bit.bitwarden.data.vault.repository.util
|
||||
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.createMockFolder
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockFolderView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkFolder
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
@ -32,4 +33,29 @@ class VaultSdkFolderExtensionsTest {
|
|||
sdkFolder,
|
||||
)
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `toSortAlphabetically should sort folders by name`() {
|
||||
val list = listOf(
|
||||
createMockFolderView(1).copy(name = "c"),
|
||||
createMockFolderView(1).copy(name = "D"),
|
||||
createMockFolderView(1).copy(name = "B"),
|
||||
createMockFolderView(1).copy(name = "A"),
|
||||
createMockFolderView(1).copy(name = "z"),
|
||||
)
|
||||
|
||||
val expected = listOf(
|
||||
createMockFolderView(1).copy(name = "A"),
|
||||
createMockFolderView(1).copy(name = "B"),
|
||||
createMockFolderView(1).copy(name = "c"),
|
||||
createMockFolderView(1).copy(name = "D"),
|
||||
createMockFolderView(1).copy(name = "z"),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
expected,
|
||||
list.sortAlphabetically(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue