- Adds sendPollVote rust room API (still not operational, need to wait for a rust sdk release)
- Adds an optional EventId in TimelineItemPollContent
- Wires the poll answer click listeners all the way to the TimelinePresenter in order to call the new room API
- Shows question as message summary in long press menu

Closes https://github.com/vector-im/element-meta/issues/2025
This commit is contained in:
Marco Romano 2023-08-30 17:05:11 +02:00 committed by GitHub
parent d46b649a73
commit f0bed85458
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 125 additions and 25 deletions

View file

@ -35,6 +35,7 @@ import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.theme.components.Icon
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.poll.PollAnswer
import io.element.android.libraries.matrix.api.poll.PollKind
import io.element.android.libraries.theme.ElementTheme
@ -43,13 +44,18 @@ import kotlinx.collections.immutable.ImmutableList
@Composable
fun PollContentView(
eventId: EventId?,
question: String,
answerItems: ImmutableList<PollAnswerItem>,
pollKind: PollKind,
isPollEnded: Boolean,
onAnswerSelected: (PollAnswer) -> Unit,
onAnswerSelected: (pollStartId: EventId, answerId: String) -> Unit,
modifier: Modifier = Modifier,
) {
fun onAnswerSelected(pollAnswer: PollAnswer) {
eventId?.let { onAnswerSelected(it, pollAnswer.id) }
}
Column(
modifier = modifier
.selectableGroup()
@ -58,7 +64,7 @@ fun PollContentView(
) {
PollTitle(title = question)
PollAnswers(answerItems = answerItems, onAnswerSelected = onAnswerSelected)
PollAnswers(answerItems = answerItems, onAnswerSelected = ::onAnswerSelected)
when {
isPollEnded || pollKind == PollKind.Disclosed -> DisclosedPollBottomNotice(answerItems)
@ -134,11 +140,12 @@ fun ColumnScope.UndisclosedPollBottomNotice(modifier: Modifier = Modifier) {
@Composable
internal fun PollContentUndisclosedPreview() = ElementPreview {
PollContentView(
eventId = EventId("\$anEventId"),
question = "What type of food should we have at the party?",
answerItems = aPollAnswerItemList(isDisclosed = false),
pollKind = PollKind.Undisclosed,
isPollEnded = false,
onAnswerSelected = { },
onAnswerSelected = { _, _ -> },
)
}
@ -146,11 +153,12 @@ internal fun PollContentUndisclosedPreview() = ElementPreview {
@Composable
internal fun PollContentDisclosedPreview() = ElementPreview {
PollContentView(
eventId = EventId("\$anEventId"),
question = "What type of food should we have at the party?",
answerItems = aPollAnswerItemList(),
pollKind = PollKind.Disclosed,
isPollEnded = false,
onAnswerSelected = { },
onAnswerSelected = { _, _ -> },
)
}
@ -158,10 +166,11 @@ internal fun PollContentDisclosedPreview() = ElementPreview {
@Composable
internal fun PollContentEndedPreview() = ElementPreview {
PollContentView(
eventId = EventId("\$anEventId"),
question = "What type of food should we have at the party?",
answerItems = aPollAnswerItemList(isEnded = true),
pollKind = PollKind.Disclosed,
isPollEnded = false,
onAnswerSelected = { },
onAnswerSelected = { _, _ -> },
)
}