Skip to content

Commit 030af71

Browse files
committed
a11y: Extract method a11yReactionDetails to use it at other places
1 parent 74081f3 commit 030af71

File tree

2 files changed

+42
-27
lines changed

2 files changed

+42
-27
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/a11y/Reactions.kt

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,53 @@ package io.element.android.features.messages.impl.timeline.a11y
99

1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.ReadOnlyComposable
12+
import androidx.compose.ui.res.pluralStringResource
1213
import androidx.compose.ui.res.stringResource
14+
import io.element.android.features.messages.impl.R
1315
import io.element.android.libraries.ui.strings.CommonStrings
1416

1517
@Composable
1618
@ReadOnlyComposable
1719
fun a11yReactionAction(
1820
emoji: String,
19-
userAlreadyReacted: Boolean = false,
21+
userAlreadyReacted: Boolean,
2022
): String {
2123
return if (userAlreadyReacted) {
2224
stringResource(id = CommonStrings.a11y_remove_reaction_with, emoji)
2325
} else {
2426
stringResource(id = CommonStrings.a11y_react_with, emoji)
2527
}
2628
}
29+
30+
@Composable
31+
@ReadOnlyComposable
32+
fun a11yReactionDetails(
33+
emoji: String,
34+
userAlreadyReacted: Boolean,
35+
reactionCount: Int,
36+
): String {
37+
val reaction = if (emoji.startsWith("mxc://")) {
38+
stringResource(CommonStrings.common_an_image)
39+
} else {
40+
emoji
41+
}
42+
return if (userAlreadyReacted) {
43+
if (reactionCount == 1) {
44+
stringResource(R.string.screen_room_timeline_reaction_you_a11y, reaction)
45+
} else {
46+
pluralStringResource(
47+
R.plurals.screen_room_timeline_reaction_including_you_a11y,
48+
reactionCount - 1,
49+
reactionCount - 1,
50+
reaction,
51+
)
52+
}
53+
} else {
54+
pluralStringResource(
55+
R.plurals.screen_room_timeline_reaction_a11y,
56+
reactionCount,
57+
reactionCount,
58+
reaction,
59+
)
60+
}
61+
}

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

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import androidx.compose.ui.Alignment
2828
import androidx.compose.ui.Modifier
2929
import androidx.compose.ui.draw.clip
3030
import androidx.compose.ui.graphics.Color
31-
import androidx.compose.ui.res.pluralStringResource
3231
import androidx.compose.ui.res.stringResource
3332
import androidx.compose.ui.semantics.clearAndSetSemantics
3433
import androidx.compose.ui.semantics.contentDescription
@@ -40,6 +39,7 @@ import coil3.compose.AsyncImage
4039
import io.element.android.compound.theme.ElementTheme
4140
import io.element.android.features.messages.impl.R
4241
import io.element.android.features.messages.impl.timeline.a11y.a11yReactionAction
42+
import io.element.android.features.messages.impl.timeline.a11y.a11yReactionDetails
4343
import io.element.android.features.messages.impl.timeline.model.AggregatedReaction
4444
import io.element.android.features.messages.impl.timeline.model.AggregatedReactionProvider
4545
import io.element.android.features.messages.impl.timeline.model.aTimelineItemReactions
@@ -52,7 +52,6 @@ import io.element.android.libraries.designsystem.theme.components.Surface
5252
import io.element.android.libraries.designsystem.theme.components.Text
5353
import io.element.android.libraries.matrix.api.media.MediaSource
5454
import io.element.android.libraries.matrix.ui.media.MediaRequestData
55-
import io.element.android.libraries.ui.strings.CommonStrings
5655

5756
@Composable
5857
@Suppress("ModifierClickableOrder") // This is needed to display the right ripple shape
@@ -78,30 +77,11 @@ fun MessagesReactionButton(
7877
is MessagesReactionsButtonContent.Icon -> stringResource(id = R.string.screen_room_timeline_add_reaction)
7978
is MessagesReactionsButtonContent.Text -> content.text
8079
is MessagesReactionsButtonContent.Reaction -> {
81-
val reaction = if (content.reaction.key.startsWith("mxc://")) {
82-
stringResource(CommonStrings.common_an_image)
83-
} else {
84-
content.reaction.key
85-
}
86-
if (content.isHighlighted) {
87-
if (content.reaction.count == 1) {
88-
stringResource(R.string.screen_room_timeline_reaction_you_a11y, reaction)
89-
} else {
90-
pluralStringResource(
91-
R.plurals.screen_room_timeline_reaction_including_you_a11y,
92-
content.reaction.count - 1,
93-
content.reaction.count - 1,
94-
reaction,
95-
)
96-
}
97-
} else {
98-
pluralStringResource(
99-
R.plurals.screen_room_timeline_reaction_a11y,
100-
content.reaction.count,
101-
content.reaction.count,
102-
reaction,
103-
)
104-
}
80+
a11yReactionDetails(
81+
emoji = content.reaction.key,
82+
userAlreadyReacted = content.isHighlighted,
83+
reactionCount = content.reaction.count,
84+
)
10585
}
10686
}
10787

0 commit comments

Comments
 (0)