Skip to content

Commit ef8d57d

Browse files
committed
[a11y] Use built-in onClickLabel parameter.
1 parent 635711e commit ef8d57d

File tree

6 files changed

+28
-60
lines changed

6 files changed

+28
-60
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListView.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import androidx.compose.ui.graphics.Color
3939
import androidx.compose.ui.platform.LocalContext
4040
import androidx.compose.ui.res.stringResource
4141
import androidx.compose.ui.semantics.clearAndSetSemantics
42-
import androidx.compose.ui.semantics.onClick
4342
import androidx.compose.ui.semantics.semantics
4443
import androidx.compose.ui.semantics.traversalIndex
4544
import androidx.compose.ui.text.style.TextAlign
@@ -454,19 +453,11 @@ private fun EmojiButton(
454453
.size(48.dp)
455454
.background(backgroundColor, CircleShape)
456455
.clickable(
457-
enabled = true,
456+
onClickLabel = a11yClickLabel,
458457
onClick = { onClick(emoji) },
459458
indication = ripple(bounded = false, radius = emojiRippleRadius),
460459
interactionSource = remember { MutableInteractionSource() }
461-
)
462-
.semantics {
463-
onClick(
464-
label = a11yClickLabel,
465-
) {
466-
onClick(emoji)
467-
true
468-
}
469-
},
460+
),
470461
contentAlignment = Alignment.Center
471462
) {
472463
Text(

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessagesReactionButton.kt

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import androidx.compose.ui.graphics.Color
3131
import androidx.compose.ui.res.stringResource
3232
import androidx.compose.ui.semantics.clearAndSetSemantics
3333
import androidx.compose.ui.semantics.contentDescription
34-
import androidx.compose.ui.semantics.onClick
3534
import androidx.compose.ui.tooling.preview.PreviewParameter
3635
import androidx.compose.ui.unit.dp
3736
import androidx.compose.ui.unit.sp
@@ -85,15 +84,6 @@ fun MessagesReactionButton(
8584
}
8685
}
8786

88-
val a11yClickLabel = if (content is MessagesReactionsButtonContent.Reaction) {
89-
a11yReactionAction(
90-
emoji = content.reaction.key,
91-
userAlreadyReacted = content.isHighlighted
92-
)
93-
} else {
94-
""
95-
}
96-
9787
Surface(
9888
modifier = modifier
9989
.background(Color.Transparent)
@@ -107,6 +97,12 @@ fun MessagesReactionButton(
10797
.clip(RoundedCornerShape(corner = CornerSize(12.dp)))
10898
.combinedClickable(
10999
onClick = onClick,
100+
onClickLabel = (content as? MessagesReactionsButtonContent.Reaction)?.let {
101+
a11yReactionAction(
102+
emoji = content.reaction.key,
103+
userAlreadyReacted = content.isHighlighted
104+
)
105+
},
110106
onLongClick = onLongClick
111107
)
112108
// Inner border, to highlight when selected
@@ -115,14 +111,6 @@ fun MessagesReactionButton(
115111
.padding(vertical = 4.dp, horizontal = 10.dp)
116112
.clearAndSetSemantics {
117113
contentDescription = a11yText
118-
if (content is MessagesReactionsButtonContent.Reaction) {
119-
onClick(
120-
label = a11yClickLabel
121-
) {
122-
onClick()
123-
true
124-
}
125-
}
126114
},
127115
color = buttonColor
128116
) {

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ import io.element.android.libraries.designsystem.components.button.MainActionBut
5858
import io.element.android.libraries.designsystem.components.list.ListItemContent
5959
import io.element.android.libraries.designsystem.components.preferences.PreferenceCategory
6060
import io.element.android.libraries.designsystem.components.preferences.PreferenceSwitch
61-
import io.element.android.libraries.designsystem.modifiers.a11yClickLabel
6261
import io.element.android.libraries.designsystem.modifiers.niceClickable
6362
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
6463
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
@@ -401,7 +400,6 @@ private fun RoomHeaderSection(
401400
.padding(horizontal = 16.dp),
402401
horizontalAlignment = Alignment.CenterHorizontally,
403402
) {
404-
val actionView = stringResource(CommonStrings.action_view)
405403
Avatar(
406404
avatarData = AvatarData(roomId.value, roomName, avatarUrl, AvatarSize.RoomHeader),
407405
avatarType = AvatarType.Room(
@@ -412,9 +410,13 @@ private fun RoomHeaderSection(
412410
),
413411
contentDescription = avatarUrl?.let { stringResource(CommonStrings.a11y_room_avatar) },
414412
modifier = Modifier
415-
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
413+
.clickable(
414+
enabled = avatarUrl != null,
415+
onClickLabel = stringResource(CommonStrings.action_view),
416+
) {
417+
openAvatarPreview(avatarUrl!!)
418+
}
416419
.testTag(TestTags.roomDetailAvatar)
417-
.a11yClickLabel(avatarUrl?.let { actionView })
418420
)
419421
TitleAndSubtitle(
420422
title = roomName,

features/userprofile/shared/src/main/kotlin/io/element/android/features/userprofile/shared/UserProfileHeaderSection.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import io.element.android.libraries.designsystem.components.avatar.Avatar
3131
import io.element.android.libraries.designsystem.components.avatar.AvatarData
3232
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
3333
import io.element.android.libraries.designsystem.components.avatar.AvatarType
34-
import io.element.android.libraries.designsystem.modifiers.a11yClickLabel
3534
import io.element.android.libraries.designsystem.modifiers.niceClickable
3635
import io.element.android.libraries.designsystem.preview.ElementPreview
3736
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@@ -61,16 +60,19 @@ fun UserProfileHeaderSection(
6160
.padding(horizontal = 16.dp),
6261
horizontalAlignment = Alignment.CenterHorizontally,
6362
) {
64-
val actionView = stringResource(CommonStrings.action_view)
6563
Avatar(
6664
avatarData = AvatarData(userId.value, userName, avatarUrl, AvatarSize.UserHeader),
6765
avatarType = AvatarType.User,
6866
contentDescription = avatarUrl?.let { stringResource(CommonStrings.a11y_user_avatar) },
6967
modifier = Modifier
7068
.clip(CircleShape)
71-
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
69+
.clickable(
70+
enabled = avatarUrl != null,
71+
onClickLabel = stringResource(CommonStrings.action_view),
72+
) {
73+
openAvatarPreview(avatarUrl!!)
74+
}
7275
.testTag(TestTags.memberDetailAvatar)
73-
.a11yClickLabel(avatarUrl?.let { actionView })
7476
)
7577
Spacer(modifier = Modifier.height(24.dp))
7678
if (userName != null) {

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/DmAvatars.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import androidx.compose.ui.platform.LocalLayoutDirection
2626
import androidx.compose.ui.res.stringResource
2727
import androidx.compose.ui.tooling.preview.Preview
2828
import androidx.compose.ui.unit.LayoutDirection
29-
import io.element.android.libraries.designsystem.modifiers.a11yClickLabel
3029
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
3130
import io.element.android.libraries.designsystem.preview.PreviewGroup
3231
import io.element.android.libraries.designsystem.text.toPx
@@ -52,7 +51,6 @@ fun DmAvatars(
5251
val boxSizePx = boxSize.toPx()
5352
val otherAvatarRadius = otherUserAvatarData.size.dp.toPx() / 2
5453
val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
55-
val actionView = stringResource(CommonStrings.action_view)
5654
Box(
5755
modifier = modifier.size(boxSize),
5856
) {
@@ -84,10 +82,12 @@ fun DmAvatars(
8482
)
8583
}
8684
.clip(CircleShape)
87-
.clickable(enabled = userAvatarData.url != null) {
85+
.clickable(
86+
enabled = userAvatarData.url != null,
87+
onClickLabel = stringResource(CommonStrings.action_view),
88+
) {
8889
userAvatarData.url?.let { openAvatarPreview(it) }
8990
}
90-
.a11yClickLabel(userAvatarData.url?.let { actionView })
9191
)
9292
// Draw other user avatar
9393
Avatar(
@@ -97,11 +97,13 @@ fun DmAvatars(
9797
modifier = Modifier
9898
.align(Alignment.TopEnd)
9999
.clip(CircleShape)
100-
.clickable(enabled = otherUserAvatarData.url != null) {
100+
.clickable(
101+
enabled = otherUserAvatarData.url != null,
102+
onClickLabel = stringResource(CommonStrings.action_view),
103+
) {
101104
otherUserAvatarData.url?.let { openOtherAvatarPreview(it) }
102105
}
103106
.testTag(TestTags.memberDetailAvatar)
104-
.a11yClickLabel(otherUserAvatarData.url?.let { actionView })
105107
)
106108
}
107109
}

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/modifiers/Clickable.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.ui.Modifier
1414
import androidx.compose.ui.draw.clip
15-
import androidx.compose.ui.semantics.onClick
16-
import androidx.compose.ui.semantics.semantics
1715
import androidx.compose.ui.unit.dp
1816

1917
fun Modifier.clickableIfNotNull(onClick: (() -> Unit)? = null): Modifier = this.then(
@@ -31,18 +29,3 @@ fun Modifier.niceClickable(
3129
.clickable { onClick() }
3230
.padding(horizontal = 4.dp)
3331
}
34-
35-
fun Modifier.a11yClickLabel(
36-
label: String?,
37-
): Modifier = then(
38-
if (label != null) {
39-
Modifier.semantics {
40-
onClick(
41-
label = label,
42-
action = null,
43-
)
44-
}
45-
} else {
46-
Modifier
47-
}
48-
)

0 commit comments

Comments
 (0)