Merge pull request #5572 from p1gp1g/play-sticker
Show stickers on click
This commit is contained in:
commit
835497682f
|
@ -0,0 +1,2 @@
|
|||
Show stickers on click
|
||||
|
|
@ -177,6 +177,7 @@ import im.vector.app.features.html.PillsPostProcessor
|
|||
import im.vector.app.features.invite.VectorInviteView
|
||||
import im.vector.app.features.location.LocationSharingMode
|
||||
import im.vector.app.features.location.toLocationData
|
||||
import im.vector.app.features.media.AttachmentData
|
||||
import im.vector.app.features.media.ImageContentRenderer
|
||||
import im.vector.app.features.media.VideoContentRenderer
|
||||
import im.vector.app.features.notifications.NotificationDrawerManager
|
||||
|
@ -1871,12 +1872,16 @@ class TimelineFragment @Inject constructor(
|
|||
vectorBaseActivity.notImplemented("encrypted message click")
|
||||
}
|
||||
|
||||
override fun onImageMessageClicked(messageImageContent: MessageImageInfoContent, mediaData: ImageContentRenderer.Data, view: View) {
|
||||
override fun onImageMessageClicked(messageImageContent: MessageImageInfoContent,
|
||||
mediaData: ImageContentRenderer.Data,
|
||||
view: View,
|
||||
inMemory: List<AttachmentData>) {
|
||||
navigator.openMediaViewer(
|
||||
activity = requireActivity(),
|
||||
roomId = timelineArgs.roomId,
|
||||
mediaData = mediaData,
|
||||
view = view
|
||||
view = view,
|
||||
inMemory = inMemory
|
||||
) { pairs ->
|
||||
pairs.add(Pair(views.roomToolbar, ViewCompat.getTransitionName(views.roomToolbar) ?: ""))
|
||||
pairs.add(Pair(views.composerLayout, ViewCompat.getTransitionName(views.composerLayout) ?: ""))
|
||||
|
|
|
@ -57,6 +57,7 @@ import im.vector.app.features.home.room.detail.timeline.item.ReactionsSummaryEve
|
|||
import im.vector.app.features.home.room.detail.timeline.item.ReadReceiptData
|
||||
import im.vector.app.features.home.room.detail.timeline.item.ReadReceiptsItem
|
||||
import im.vector.app.features.home.room.detail.timeline.url.PreviewUrlRetriever
|
||||
import im.vector.app.features.media.AttachmentData
|
||||
import im.vector.app.features.media.ImageContentRenderer
|
||||
import im.vector.app.features.media.VideoContentRenderer
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
|
@ -127,7 +128,10 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec
|
|||
fun onEventVisible(event: TimelineEvent)
|
||||
fun onRoomCreateLinkClicked(url: String)
|
||||
fun onEncryptedMessageClicked(informationData: MessageInformationData, view: View)
|
||||
fun onImageMessageClicked(messageImageContent: MessageImageInfoContent, mediaData: ImageContentRenderer.Data, view: View)
|
||||
fun onImageMessageClicked(messageImageContent: MessageImageInfoContent,
|
||||
mediaData: ImageContentRenderer.Data,
|
||||
view: View,
|
||||
inMemory: List<AttachmentData>)
|
||||
fun onVideoMessageClicked(messageVideoContent: MessageVideoContent, mediaData: VideoContentRenderer.Data, view: View)
|
||||
|
||||
// fun onFileMessageClicked(eventId: String, messageFileContent: MessageFileContent)
|
||||
|
|
|
@ -480,9 +480,12 @@ class MessageItemFactory @Inject constructor(
|
|||
.apply {
|
||||
if (messageContent.msgType == MessageType.MSGTYPE_STICKER_LOCAL) {
|
||||
mode(ImageContentRenderer.Mode.STICKER)
|
||||
clickListener { view ->
|
||||
callback?.onImageMessageClicked(messageContent, data, view, listOf(data))
|
||||
}
|
||||
} else {
|
||||
clickListener { view ->
|
||||
callback?.onImageMessageClicked(messageContent, data, view)
|
||||
callback?.onImageMessageClicked(messageContent, data, view, emptyList())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.matrix.android.sdk.api.session.events.model.toModel
|
|||
import org.matrix.android.sdk.api.session.file.FileService
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageImageContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageStickerContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageWithAttachmentContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.getFileUrl
|
||||
|
@ -52,7 +53,10 @@ class RoomEventsAttachmentProvider(
|
|||
|
||||
override fun getAttachmentInfoAt(position: Int): AttachmentInfo {
|
||||
return getItem(position).let {
|
||||
val content = it.root.getClearContent().toModel<MessageContent>() as? MessageWithAttachmentContent
|
||||
val clearContent = it.root.getClearContent()
|
||||
val content = clearContent.toModel<MessageContent>()
|
||||
?: clearContent.toModel<MessageStickerContent>()
|
||||
as? MessageWithAttachmentContent
|
||||
if (content is MessageImageContent) {
|
||||
val data = ImageContentRenderer.Data(
|
||||
eventId = it.eventId,
|
||||
|
@ -66,6 +70,33 @@ class RoomEventsAttachmentProvider(
|
|||
height = null,
|
||||
allowNonMxcUrls = it.root.sendState.isSending()
|
||||
|
||||
)
|
||||
if (content.mimeType == MimeTypes.Gif) {
|
||||
AttachmentInfo.AnimatedImage(
|
||||
uid = it.eventId,
|
||||
url = content.url ?: "",
|
||||
data = data
|
||||
)
|
||||
} else {
|
||||
AttachmentInfo.Image(
|
||||
uid = it.eventId,
|
||||
url = content.url ?: "",
|
||||
data = data
|
||||
)
|
||||
}
|
||||
} else if (content is MessageStickerContent) {
|
||||
val data = ImageContentRenderer.Data(
|
||||
eventId = it.eventId,
|
||||
filename = content.body,
|
||||
mimeType = content.mimeType,
|
||||
url = content.getFileUrl(),
|
||||
elementToDecrypt = content.encryptedFileInfo?.toElementToDecrypt(),
|
||||
maxHeight = -1,
|
||||
maxWidth = -1,
|
||||
width = null,
|
||||
height = null,
|
||||
allowNonMxcUrls = false
|
||||
|
||||
)
|
||||
if (content.mimeType == MimeTypes.Gif) {
|
||||
AttachmentInfo.AnimatedImage(
|
||||
|
|
Loading…
Reference in New Issue