diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt
index 1335dca2..503125ca 100644
--- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt
+++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/ColoredRecipientStatusText.kt
@@ -30,15 +30,18 @@ import androidx.compose.ui.platform.testTag
import ee.ria.DigiDoc.ui.component.shared.TagBadge
import ee.ria.DigiDoc.ui.theme.Green_2_50
import ee.ria.DigiDoc.ui.theme.Green_2_700
+import ee.ria.DigiDoc.ui.theme.Red50
+import ee.ria.DigiDoc.ui.theme.Red800
@OptIn(ExperimentalLayoutApi::class)
@Composable
fun ColoredRecipientStatusText(
text: String,
modifier: Modifier = Modifier,
+ expired: Boolean = false,
) {
- val tagBackgroundColor = Green_2_50
- val tagContentColor = Green_2_700
+ val tagBackgroundColor = if (!expired) Green_2_50 else Red50
+ val tagContentColor = if (!expired) Green_2_700 else Red800
FlowRow(
modifier = modifier,
diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt
index df203167..5f29184c 100644
--- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt
+++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt
@@ -789,7 +789,7 @@ fun EncryptNavigation(
leftActionButtonName = R.string.sign_button,
rightActionButtonName = rightActionButtonName,
leftActionButtonContentDescription = R.string.sign_button,
- rightActionButtonContentDescription = R.string.decrypt_button_accessibility,
+ rightActionButtonContentDescription = rightActionButtonName,
onLeftActionButtonClick = onSignActionClick,
onRightActionButtonClick = {
if (encryptViewModel.isDecryptButtonShown(cryptoContainer, isNestedContainer)) {
diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt
index 76d0cf33..43d093cc 100644
--- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt
+++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt
@@ -72,6 +72,7 @@ import ee.ria.DigiDoc.utilsLib.container.NameUtil.formatCompanyName
import ee.ria.DigiDoc.utilsLib.container.NameUtil.formatName
import ee.ria.DigiDoc.utilsLib.date.DateUtil.dateFormat
import ee.ria.DigiDoc.utilsLib.validator.PersonalCodeValidator
+import java.util.Date
@OptIn(ExperimentalComposeUiApi::class)
@Composable
@@ -83,7 +84,6 @@ fun RecipientComponent(
onClick: (Addressee) -> Unit,
isCDOC2Container: Boolean = false,
) {
- val context = LocalContext.current
val recipientText = stringResource(R.string.crypto_recipient_title)
val buttonName = stringResource(id = R.string.button_name)
@@ -114,6 +114,7 @@ fun RecipientComponent(
formatCompanyName(recipient.identifier, recipient.serialNumber)
}
val certTypeText = getRecipientCertTypeText(LocalContext.current, recipient.certType)
+ var expired = false
var certValidTo =
recipient.validTo
?.let {
@@ -130,17 +131,22 @@ fun RecipientComponent(
val decryptionValidToText =
if (isCDOC2Container) {
certValidTo = ""
- recipient.validTo
- ?.let {
- dateFormat.format(
- it,
+
+ recipient.validTo?.let { validToDate ->
+ val formattedDate = dateFormat.format(validToDate)
+ if (validToDate.before(Date())) {
+ expired = true
+ stringResource(
+ R.string.crypto_decryption_expired,
+ formattedDate,
)
- }?.let {
+ } else {
stringResource(
R.string.crypto_decryption_valid_to,
- it,
+ formattedDate,
)
- } ?: ""
+ }
+ } ?: ""
} else {
""
}
@@ -234,6 +240,7 @@ fun RecipientComponent(
if (decryptionValidToText.isNotEmpty()) {
ColoredRecipientStatusText(
text = decryptionValidToText,
+ expired = expired,
modifier =
modifier
.padding(vertical = SBorder)
diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt
index 30f16a33..4faf781e 100644
--- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt
+++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt
@@ -52,7 +52,6 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
@@ -87,9 +86,12 @@ fun ContainerNameView(
onRightActionButtonClick: () -> Unit = {},
onMoreOptionsActionButtonClick: () -> Unit = {},
) {
- val context = LocalContext.current
val leftActionButtonContentDescriptionText = stringResource(leftActionButtonContentDescription)
- val rightActionButtonContentDescriptionText = stringResource(rightActionButtonContentDescription)
+
+ var rightActionButtonContentDescriptionText = ""
+ if (showRightActionButton) {
+ rightActionButtonContentDescriptionText = stringResource(rightActionButtonContentDescription)
+ }
val containerTitleText = stringResource(R.string.container_title)
diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/EncryptViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/EncryptViewModel.kt
index c4127a49..f20387f0 100644
--- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/EncryptViewModel.kt
+++ b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/EncryptViewModel.kt
@@ -45,6 +45,7 @@ import ee.ria.DigiDoc.viewmodel.shared.SharedContainerViewModel
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.withContext
import java.io.File
+import java.util.Date
import javax.inject.Inject
@HiltViewModel
@@ -99,7 +100,20 @@ class EncryptViewModel
fun isDecryptButtonShown(
cryptoContainer: CryptoContainer?,
isNestedContainer: Boolean,
- ): Boolean = isEncryptedContainer(cryptoContainer) && !isNestedContainer
+ ): Boolean {
+ val base = isEncryptedContainer(cryptoContainer) && !isNestedContainer
+ if (!base) return false
+
+ val now = Date()
+ val allExpired =
+ cryptoContainer
+ ?.recipients
+ ?.all { recipient ->
+ recipient.validTo?.before(now) == true
+ } ?: false
+
+ return !allExpired
+ }
fun isEncryptButtonShown(
cryptoContainer: CryptoContainer?,
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 6420f183..0164a115 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -163,6 +163,7 @@
Lisatud adressaadid
Adressaat
Dekrüpteerimine võimalik kuni %1$s
+ Dekrüpteerimise võimalus aegus %1$s
(kehtiv kuni %1$s)
Ümbriku failid
Krüpteeritud failid
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7d4b1efc..37d81193 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -163,6 +163,7 @@
Added recipients
Recipient
Decryption until %1$s
+ Decryption expired %1$s
(valid to %1$s)
Container files
Encrypted files