Implement reply preview for poll.end events.
This commit is contained in:
parent
89f91a2ecd
commit
89a7d70849
@ -3502,4 +3502,5 @@
|
|||||||
<string name="message_reply_to_sender_sent_sticker">sent a sticker.</string>
|
<string name="message_reply_to_sender_sent_sticker">sent a sticker.</string>
|
||||||
<string name="message_reply_to_sender_created_poll">created a poll.</string>
|
<string name="message_reply_to_sender_created_poll">created a poll.</string>
|
||||||
<string name="message_reply_to_sender_ended_poll">ended a poll.</string>
|
<string name="message_reply_to_sender_ended_poll">ended a poll.</string>
|
||||||
|
<string name="message_reply_to_ended_poll_preview">Ended poll</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -44,6 +44,7 @@ import org.commonmark.parser.Parser
|
|||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconInfoContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconInfoContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageContent
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.message.MessageEndPollContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageFormat
|
import org.matrix.android.sdk.api.session.room.model.message.MessageFormat
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessagePollContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessagePollContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageTextContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageTextContent
|
||||||
@ -181,6 +182,7 @@ class PlainTextComposerLayout @JvmOverloads constructor(
|
|||||||
is MessageAudioContent -> getAudioContentBodyText(messageContent)
|
is MessageAudioContent -> getAudioContentBodyText(messageContent)
|
||||||
is MessagePollContent -> messageContent.getBestPollCreationInfo()?.question?.getBestQuestion()
|
is MessagePollContent -> messageContent.getBestPollCreationInfo()?.question?.getBestQuestion()
|
||||||
is MessageBeaconInfoContent -> resources.getString(R.string.live_location_description)
|
is MessageBeaconInfoContent -> resources.getString(R.string.live_location_description)
|
||||||
|
is MessageEndPollContent -> resources.getString(R.string.message_reply_to_ended_poll_preview)
|
||||||
else -> messageContent?.body.orEmpty()
|
else -> messageContent?.body.orEmpty()
|
||||||
}
|
}
|
||||||
var formattedBody: CharSequence? = null
|
var formattedBody: CharSequence? = null
|
||||||
|
@ -17,11 +17,13 @@
|
|||||||
package im.vector.app.features.home.room.detail.timeline.format
|
package im.vector.app.features.home.room.detail.timeline.format
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import im.vector.app.R
|
||||||
import im.vector.app.core.utils.TextUtils
|
import im.vector.app.core.utils.TextUtils
|
||||||
import org.matrix.android.sdk.api.session.events.model.Event
|
import org.matrix.android.sdk.api.session.events.model.Event
|
||||||
import org.matrix.android.sdk.api.session.events.model.isAudioMessage
|
import org.matrix.android.sdk.api.session.events.model.isAudioMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isFileMessage
|
import org.matrix.android.sdk.api.session.events.model.isFileMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.isPollEnd
|
||||||
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.toModel
|
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
|
||||||
@ -51,10 +53,13 @@ class EventDetailsFormatter @Inject constructor(
|
|||||||
event.isVideoMessage() -> formatForVideoMessage(event)
|
event.isVideoMessage() -> formatForVideoMessage(event)
|
||||||
event.isAudioMessage() -> formatForAudioMessage(event)
|
event.isAudioMessage() -> formatForAudioMessage(event)
|
||||||
event.isFileMessage() -> formatForFileMessage(event)
|
event.isFileMessage() -> formatForFileMessage(event)
|
||||||
|
event.isPollEnd() -> formatPollEndMessage()
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun formatPollEndMessage() = context.getString(R.string.message_reply_to_ended_poll_preview)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Example: "1024 x 720 - 670 kB".
|
* Example: "1024 x 720 - 670 kB".
|
||||||
*/
|
*/
|
||||||
|
@ -26,6 +26,8 @@ import org.matrix.android.sdk.api.session.events.model.isFileMessage
|
|||||||
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isLiveLocation
|
import org.matrix.android.sdk.api.session.events.model.isLiveLocation
|
||||||
import org.matrix.android.sdk.api.session.events.model.isPoll
|
import org.matrix.android.sdk.api.session.events.model.isPoll
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.isPollEnd
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.isPollStart
|
||||||
import org.matrix.android.sdk.api.session.events.model.isSticker
|
import org.matrix.android.sdk.api.session.events.model.isSticker
|
||||||
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
import org.matrix.android.sdk.api.session.events.model.isVideoMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isVoiceMessage
|
import org.matrix.android.sdk.api.session.events.model.isVoiceMessage
|
||||||
@ -94,9 +96,11 @@ class ProcessBodyOfReplyToEventUseCase @Inject constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
repliedToEvent.isPoll() -> {
|
repliedToEvent.isPoll() -> {
|
||||||
val fallbackText = if (repliedToEvent.type in EventType.POLL_START.values)
|
val fallbackText = when {
|
||||||
stringProvider.getString(R.string.message_reply_to_sender_created_poll)
|
repliedToEvent.isPollStart() -> stringProvider.getString(R.string.message_reply_to_sender_created_poll)
|
||||||
else stringProvider.getString(R.string.message_reply_to_sender_ended_poll)
|
repliedToEvent.isPollEnd() -> stringProvider.getString(R.string.message_reply_to_sender_ended_poll)
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
matrixFormattedBody.replaceRange(
|
matrixFormattedBody.replaceRange(
|
||||||
afterBreakingLineIndex,
|
afterBreakingLineIndex,
|
||||||
endOfBlockQuoteIndex,
|
endOfBlockQuoteIndex,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user