From ff752c698859fbe7244e7be8c84c8c48f72988e2 Mon Sep 17 00:00:00 2001 From: Artem Chepurnoy Date: Fri, 19 Jan 2024 10:13:35 +0200 Subject: [PATCH] fix: Make Last used date of Password history optional #84 --- .../kotlin/com/artemchep/keyguard/common/model/DSecret.kt | 2 +- .../keyguard/core/store/bitwarden/BitwardenCipher.kt | 2 +- .../home/vault/component/VaultPasswordHistoryValueItem.kt | 5 ++--- .../feature/home/vault/model/VaultPasswordHistoryItem.kt | 2 +- .../vault/screen/VaultViewPasswordHistoryStateProducer.kt | 8 +++++--- .../provider/bitwarden/entity/PasswordHistoryEntity.kt | 2 +- .../bitwarden/entity/request/PasswordHistoryRequest.kt | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt index 7f8fec1..579abb3 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/common/model/DSecret.kt @@ -300,7 +300,7 @@ data class DSecret( @optics data class PasswordHistory( val password: String, - val lastUsedDate: Instant, + val lastUsedDate: Instant?, ) { companion object; diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt index 963ebf8..b4977f4 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/core/store/bitwarden/BitwardenCipher.kt @@ -163,7 +163,7 @@ data class BitwardenCipher( @Serializable data class PasswordHistory( val password: String, - val lastUsedDate: Instant, + val lastUsedDate: Instant? = null, ) { val id = "$password|timestamp=$lastUsedDate" } diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt index a86cc27..352d46d 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/component/VaultPasswordHistoryValueItem.kt @@ -1,6 +1,5 @@ package com.artemchep.keyguard.feature.home.vault.component -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.ContentCopy import androidx.compose.material.icons.outlined.Password @@ -43,10 +42,10 @@ fun VaultPasswordHistoryValueItem( fontFamily = if (item.monospace) monoFontFamily else null, ) }, - text = if (item.title.isNotBlank()) { + text = if (!item.date.isNullOrBlank()) { // composable { - Text(item.title) + Text(item.date) } } else { null diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt index 756a7ce..eafda86 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/model/VaultPasswordHistoryItem.kt @@ -11,7 +11,7 @@ sealed interface VaultPasswordHistoryItem { data class Value( override val id: String, - val title: String, + val date: String?, val value: String, val monospace: Boolean, val selected: Boolean, diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt index a96ca48..93cd649 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/feature/home/vault/screen/VaultViewPasswordHistoryStateProducer.kt @@ -199,9 +199,11 @@ fun vaultViewPasswordHistoryScreenState( passwordHistory .sortedByDescending { it.lastUsedDate } .map { password -> + val date = password.lastUsedDate + ?.let(dateFormatter::formatDateTime) TempPasswordHistory( src = password, - date = dateFormatter.formatDateTime(password.lastUsedDate), + date = date, actions = buildContextItems { section { this += copyFactory.FlatItemAction( @@ -255,7 +257,7 @@ fun vaultViewPasswordHistoryScreenState( .partially1(password.id) VaultPasswordHistoryItem.Value( id = password.id, - title = passwordWrapper.date, + date = passwordWrapper.date, value = password.password, dropdown = passwordWrapper.actions, monospace = true, @@ -302,5 +304,5 @@ fun vaultViewPasswordHistoryScreenState( private data class TempPasswordHistory( val src: DSecret.Login.PasswordHistory, val actions: List, - val date: String, + val date: String?, ) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt index 059b96c..d5e8c5f 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/PasswordHistoryEntity.kt @@ -12,5 +12,5 @@ data class PasswordHistoryEntity( val password: String, @JsonNames("lastUsedDate") @SerialName("LastUsedDate") - val lastUsedDate: Instant, + val lastUsedDate: Instant? = null, ) diff --git a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt index 808f437..74216e2 100644 --- a/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt +++ b/common/src/commonMain/kotlin/com/artemchep/keyguard/provider/bitwarden/entity/request/PasswordHistoryRequest.kt @@ -10,7 +10,7 @@ data class PasswordHistoryRequest( @SerialName("password") val password: String, @SerialName("lastUsedDate") - val lastUsedDate: Instant, + val lastUsedDate: Instant?, ) fun PasswordHistoryRequest.Companion.of(