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