Skip to content

Commit f2f7d91

Browse files
committed
Fix signing accessibility announcements
1 parent 9109aa8 commit f2f7d91

File tree

13 files changed

+83
-85
lines changed

13 files changed

+83
-85
lines changed

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ fun EncryptNavigation(
728728
}.testTag("encryptionTitle"),
729729
text = stringResource(R.string.crypto_new_title),
730730
style = MaterialTheme.typography.headlineMedium,
731+
color = MaterialTheme.colorScheme.onBackground,
731732
textAlign = TextAlign.Start,
732733
)
733734
}

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS
4747
import ee.ria.DigiDoc.ui.theme.Dimensions.loadingBarSize
4848
import ee.ria.DigiDoc.ui.theme.buttonRoundedCornerShape
4949
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.formatNumbers
50-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled
5150
import ee.ria.DigiDoc.utils.extensions.notAccessible
5251
import ee.ria.DigiDoc.utils.libdigidoc.RecipientCertTypeUtil.getRecipientCertTypeText
5352
import ee.ria.DigiDoc.utilsLib.container.NameUtil.formatCompanyName
@@ -131,11 +130,12 @@ fun RecipientComponent(
131130
modifier =
132131
modifier
133132
.fillMaxWidth()
134-
.clickable(enabled = !isTalkBackEnabled(context)) { onClick(recipient) }
133+
.clickable { onClick(recipient) }
135134
.semantics {
135+
val validToText = if (isCDOC2Container) decryptionValidToText else certValidTo
136136
this.contentDescription =
137-
"$recipientText ${index + 1} ${formatNumbers(nameText)} " +
138-
"$certTypeText $decryptionValidToText"
137+
"$recipientText ${index + 1} ${formatNumbers(nameText)} $certTypeText $validToText"
138+
139139
testTagsAsResourceId = true
140140
}.testTag("recipientComponentContainer"),
141141
colors = CardDefaults.cardColors(containerColor = Color.Transparent),

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/recipient/RecipientDetailItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ data class RecipientDetailItem(
3131
): List<RecipientDetailItem> =
3232
listOf(
3333
RecipientDetailItem(
34-
icon = 0,
34+
icon = R.drawable.ic_m3_expand_content_48dp_wght400,
3535
label = R.string.recipient_details_name_label,
3636
value = recipientFormattedName,
3737
certificate = recipient.data.x509Certificate(),

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.content.res.Configuration
66
import androidx.annotation.DrawableRes
77
import androidx.annotation.StringRes
88
import androidx.compose.foundation.background
9-
import androidx.compose.foundation.focusable
109
import androidx.compose.foundation.layout.Arrangement
1110
import androidx.compose.foundation.layout.Box
1211
import androidx.compose.foundation.layout.Column
@@ -107,7 +106,7 @@ fun ContainerNameView(
107106
.background(
108107
color = MaterialTheme.colorScheme.primary,
109108
shape = CircleShape,
110-
),
109+
).notAccessible(),
111110
contentAlignment = Alignment.Center,
112111
) {
113112
Icon(
@@ -121,14 +120,21 @@ fun ContainerNameView(
121120
.wrapContentHeight(align = Alignment.CenterVertically)
122121
.semantics {
123122
testTagsAsResourceId = true
124-
}.testTag("containerNameIcon")
125-
.notAccessible(),
123+
}.testTag("containerNameIcon"),
126124
)
127125
}
128126

129127
Spacer(modifier = modifier.width(SPadding))
130128

131-
Column(modifier = modifier.weight(1f)) {
129+
Column(
130+
modifier =
131+
modifier
132+
.weight(1f)
133+
.semantics(mergeDescendants = true) {
134+
this.contentDescription = "$containerTitleText $name"
135+
testTagsAsResourceId = true
136+
}.testTag("signedContainerName"),
137+
) {
132138
Text(
133139
modifier = modifier.notAccessible(),
134140
text = stringResource(R.string.signature_update_name_update_name),
@@ -140,11 +146,7 @@ fun ContainerNameView(
140146
modifier
141147
.padding(zeroPadding)
142148
.wrapContentHeight(align = Alignment.CenterVertically)
143-
.focusable(false)
144-
.semantics {
145-
this.contentDescription = "$containerTitleText $name"
146-
testTagsAsResourceId = true
147-
}.testTag("signedContainerName"),
149+
.notAccessible(),
148150
text = name,
149151
maxLines = 4,
150152
textColor = MaterialTheme.colorScheme.onSurface.toArgb(),

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/CryptoDataFileItem.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS
4444
import ee.ria.DigiDoc.ui.theme.Dimensions.zeroPadding
4545
import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme
4646
import ee.ria.DigiDoc.ui.theme.buttonRoundedCornerShape
47-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled
4847
import ee.ria.DigiDoc.utils.extensions.notAccessible
4948
import java.io.File
5049

@@ -68,9 +67,7 @@ fun CryptoDataFileItem(
6867
modifier =
6968
modifier
7069
.fillMaxWidth()
71-
.clickable(
72-
enabled = isMoreOptionsButtonShown && !isTalkBackEnabled(context),
73-
) { onClick(dataFile) }
70+
.clickable(enabled = isMoreOptionsButtonShown) { onClick(dataFile) }
7471
.semantics {
7572
this.contentDescription = "$fileDescription ${index + 1} ${dataFile.name} $buttonName"
7673
testTagsAsResourceId = true
@@ -92,7 +89,8 @@ fun CryptoDataFileItem(
9289
Box(
9390
modifier =
9491
modifier
95-
.wrapContentHeight(),
92+
.wrapContentHeight()
93+
.notAccessible(),
9694
contentAlignment = Alignment.Center,
9795
) {
9896
Icon(

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DataFileItem.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ fun DataFileItem(
6464
modifier =
6565
modifier
6666
.fillMaxWidth()
67+
.clickable { onClick(dataFile) }
6768
.semantics {
6869
this.contentDescription = "$fileDescription ${index + 1} ${dataFile.fileName} $buttonName"
6970
testTagsAsResourceId = true
@@ -83,12 +84,12 @@ fun DataFileItem(
8384
modifier =
8485
modifier
8586
.fillMaxWidth()
86-
.clickable { onClick(dataFile) },
8787
) {
8888
Box(
8989
modifier =
9090
modifier
91-
.wrapContentHeight(),
91+
.wrapContentHeight()
92+
.notAccessible(),
9293
contentAlignment = Alignment.Center,
9394
) {
9495
Icon(

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/Recipient.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS
4747
import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme
4848
import ee.ria.DigiDoc.ui.theme.buttonRoundedCornerShape
4949
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.formatNumbers
50-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled
5150
import ee.ria.DigiDoc.utils.extensions.notAccessible
5251
import ee.ria.DigiDoc.utils.libdigidoc.RecipientCertTypeUtil.getRecipientCertTypeText
5352
import ee.ria.DigiDoc.utilsLib.container.NameUtil.formatCompanyName
@@ -97,10 +96,10 @@ fun Recipient(
9796
modifier =
9897
modifier
9998
.fillMaxWidth()
100-
.clickable(enabled = !isTalkBackEnabled(context)) { onClick(recipient) }
101-
.semantics {
99+
.clickable { onClick(recipient) }
100+
.semantics(mergeDescendants = true) {
102101
this.contentDescription =
103-
"$recipientText ${formatNumbers(nameText)} $certTypeText"
102+
"$recipientText ${formatNumbers(nameText)} $certTypeText $certValidTo"
104103
testTagsAsResourceId = true
105104
}.testTag("recipientItemContainer"),
106105
colors = CardDefaults.cardColors(containerColor = Color.Transparent),

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/IdCardView.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ import androidx.compose.ui.platform.LocalFocusManager
5353
import androidx.compose.ui.platform.testTag
5454
import androidx.compose.ui.res.stringResource
5555
import androidx.compose.ui.res.vectorResource
56+
import androidx.compose.ui.semantics.LiveRegionMode
5657
import androidx.compose.ui.semantics.contentDescription
58+
import androidx.compose.ui.semantics.liveRegion
5759
import androidx.compose.ui.semantics.semantics
5860
import androidx.compose.ui.semantics.testTagsAsResourceId
5961
import androidx.compose.ui.semantics.traversalIndex
@@ -648,7 +650,9 @@ fun IdCardView(
648650
modifier
649651
.focusRequester(statusMessageFocusRequester)
650652
.focusable()
651-
.testTag("idCardStatusMessage"),
653+
.semantics {
654+
liveRegion = LiveRegionMode.Assertive
655+
}.testTag("idCardStatusMessage"),
652656
textAlign = TextAlign.Center,
653657
color = MaterialTheme.colorScheme.onSurface,
654658
)

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/MobileIdSignatureUpdateContainer.kt

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ import androidx.compose.ui.platform.LocalContext
2626
import androidx.compose.ui.platform.testTag
2727
import androidx.compose.ui.res.stringResource
2828
import androidx.compose.ui.res.vectorResource
29+
import androidx.compose.ui.semantics.LiveRegionMode
2930
import androidx.compose.ui.semantics.contentDescription
31+
import androidx.compose.ui.semantics.liveRegion
3032
import androidx.compose.ui.semantics.semantics
3133
import androidx.compose.ui.semantics.testTagsAsResourceId
3234
import androidx.compose.ui.text.font.FontWeight
@@ -39,9 +41,7 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.LPadding
3941
import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding
4042
import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXL
4143
import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme
42-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil
4344
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.formatNumbers
44-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType
4545
import ee.ria.DigiDoc.utils.extensions.notAccessible
4646
import ee.ria.DigiDoc.viewmodel.MobileIdViewModel
4747

@@ -73,22 +73,6 @@ fun MobileIdSignatureUpdateContainer(
7373
}
7474
}
7575

76-
LaunchedEffect(Unit, challengeText) {
77-
if (challengeText.isNotEmpty()) {
78-
AccessibilityUtil.sendAccessibilityEvent(
79-
context,
80-
getAccessibilityEventType(),
81-
"$controlCode ${formatNumbers(challengeText)}",
82-
)
83-
} else {
84-
AccessibilityUtil.sendAccessibilityEvent(
85-
context,
86-
getAccessibilityEventType(),
87-
controlCodeLoadingText,
88-
)
89-
}
90-
}
91-
9276
Column(
9377
modifier =
9478
modifier
@@ -131,12 +115,14 @@ fun MobileIdSignatureUpdateContainer(
131115
.fillMaxWidth()
132116
.focusable()
133117
.semantics {
118+
liveRegion = LiveRegionMode.Assertive
134119
if (challengeText.isEmpty()) {
135120
this.contentDescription =
136121
"$controlCode $controlCodeLoadingText"
122+
} else {
123+
this.contentDescription =
124+
"$controlCode ${formatNumbers(challengeText)}"
137125
}
138-
this.contentDescription =
139-
"$controlCode ${formatNumbers(challengeText)}"
140126
}.testTag("signatureUpdateMobileIdChallenge"),
141127
)
142128
}

app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureComponent.kt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS
4848
import ee.ria.DigiDoc.ui.theme.Dimensions.loadingBarSize
4949
import ee.ria.DigiDoc.ui.theme.buttonRoundedCornerShape
5050
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.formatNumbers
51-
import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled
5251
import ee.ria.DigiDoc.utils.extensions.notAccessible
5352
import ee.ria.DigiDoc.utils.libdigidoc.SignatureStatusUtil.getSignatureStatusText
5453
import ee.ria.DigiDoc.utils.libdigidoc.SignatureStatusUtil.getTimestampStatusText
@@ -118,17 +117,20 @@ fun SignatureComponent(
118117
modifier =
119118
modifier
120119
.fillMaxWidth()
121-
.clickable(enabled = !isTalkBackEnabled(context)) { onClick(signature) }
120+
.clickable { onClick(signature) }
122121
.semantics {
123-
if (roles.isEmpty()) {
124-
this.contentDescription =
125-
"$signatureText ${index + 1}, ${formatNumbers(nameText)}," +
126-
" $statusText, $signedTime"
127-
} else {
128-
this.contentDescription =
129-
"$signatureText ${index + 1}, ${formatNumbers(nameText)}," +
130-
" $statusText, $signedTime, $roleAndAddress: $roles"
131-
}
122+
this.contentDescription =
123+
buildString {
124+
append(
125+
"$signatureText ${index + 1}, ${formatNumbers(
126+
nameText,
127+
)}, $statusText, $signedTime",
128+
)
129+
if (roles.isNotEmpty()) {
130+
append(", $roleAndAddress: $roles")
131+
}
132+
}
133+
132134
testTagsAsResourceId = true
133135
}.testTag("signatureComponentContainer"),
134136
colors = CardDefaults.cardColors(containerColor = Color.Transparent),

0 commit comments

Comments
 (0)