forked from GitHub-Mirror/riotX-android
Handle click on encrypted message
This commit is contained in:
parent
a53e40e1ee
commit
5bfa67b442
@ -542,6 +542,10 @@ class RoomDetailFragment :
|
|||||||
roomDetailViewModel.process(RoomDetailActions.EventDisplayed(event))
|
roomDetailViewModel.process(RoomDetailActions.EventDisplayed(event))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onEncryptedMessageClicked(informationData: MessageInformationData, view: View) {
|
||||||
|
vectorBaseActivity.notImplemented("encrypted message click")
|
||||||
|
}
|
||||||
|
|
||||||
override fun onImageMessageClicked(messageImageContent: MessageImageContent, mediaData: ImageContentRenderer.Data, view: View) {
|
override fun onImageMessageClicked(messageImageContent: MessageImageContent, mediaData: ImageContentRenderer.Data, view: View) {
|
||||||
val intent = ImageMediaViewerActivity.newIntent(vectorBaseActivity, mediaData)
|
val intent = ImageMediaViewerActivity.newIntent(vectorBaseActivity, mediaData)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
@ -576,7 +580,7 @@ class RoomDetailFragment :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onAvatarClicked(informationData: MessageInformationData) {
|
override fun onAvatarClicked(informationData: MessageInformationData) {
|
||||||
vectorBaseActivity.notImplemented()
|
vectorBaseActivity.notImplemented("Click on user avatar")
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
|
@ -49,6 +49,7 @@ class TimelineEventController(private val dateFormatter: TimelineDateFormatter,
|
|||||||
interface Callback : ReactionPillCallback, AvatarCallback, BaseCallback {
|
interface Callback : ReactionPillCallback, AvatarCallback, BaseCallback {
|
||||||
fun onEventVisible(event: TimelineEvent)
|
fun onEventVisible(event: TimelineEvent)
|
||||||
fun onUrlClicked(url: String)
|
fun onUrlClicked(url: String)
|
||||||
|
fun onEncryptedMessageClicked(informationData: MessageInformationData, view: View)
|
||||||
fun onImageMessageClicked(messageImageContent: MessageImageContent, mediaData: ImageContentRenderer.Data, view: View)
|
fun onImageMessageClicked(messageImageContent: MessageImageContent, mediaData: ImageContentRenderer.Data, view: View)
|
||||||
fun onVideoMessageClicked(messageVideoContent: MessageVideoContent, mediaData: VideoContentRenderer.Data, view: View)
|
fun onVideoMessageClicked(messageVideoContent: MessageVideoContent, mediaData: VideoContentRenderer.Data, view: View)
|
||||||
fun onFileMessageClicked(messageFileContent: MessageFileContent)
|
fun onFileMessageClicked(messageFileContent: MessageFileContent)
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package im.vector.riotredesign.features.home.room.detail.timeline.factory
|
package im.vector.riotredesign.features.home.room.detail.timeline.factory
|
||||||
|
|
||||||
|
import android.view.View
|
||||||
import im.vector.matrix.android.api.session.crypto.MXCryptoError
|
import im.vector.matrix.android.api.session.crypto.MXCryptoError
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
@ -23,6 +24,8 @@ import im.vector.riotredesign.R
|
|||||||
import im.vector.riotredesign.core.epoxy.VectorEpoxyModel
|
import im.vector.riotredesign.core.epoxy.VectorEpoxyModel
|
||||||
import im.vector.riotredesign.core.resources.ColorProvider
|
import im.vector.riotredesign.core.resources.ColorProvider
|
||||||
import im.vector.riotredesign.core.resources.StringProvider
|
import im.vector.riotredesign.core.resources.StringProvider
|
||||||
|
import im.vector.riotredesign.core.utils.DebouncedClickListener
|
||||||
|
import im.vector.riotredesign.features.home.room.detail.timeline.TimelineEventController
|
||||||
import im.vector.riotredesign.features.home.room.detail.timeline.item.MessageTextItem_
|
import im.vector.riotredesign.features.home.room.detail.timeline.item.MessageTextItem_
|
||||||
import im.vector.riotredesign.features.home.room.detail.timeline.util.MessageInformationDataFactory
|
import im.vector.riotredesign.features.home.room.detail.timeline.util.MessageInformationDataFactory
|
||||||
import me.gujun.android.span.span
|
import me.gujun.android.span.span
|
||||||
@ -32,7 +35,9 @@ class EncryptedItemFactory(private val messageInformationDataFactory: MessageInf
|
|||||||
private val colorProvider: ColorProvider,
|
private val colorProvider: ColorProvider,
|
||||||
private val stringProvider: StringProvider) {
|
private val stringProvider: StringProvider) {
|
||||||
|
|
||||||
fun create(event: TimelineEvent, nextEvent: TimelineEvent?): VectorEpoxyModel<*>? {
|
fun create(event: TimelineEvent,
|
||||||
|
nextEvent: TimelineEvent?,
|
||||||
|
callback: TimelineEventController.Callback?): VectorEpoxyModel<*>? {
|
||||||
event.root.eventId ?: return null
|
event.root.eventId ?: return null
|
||||||
|
|
||||||
return when {
|
return when {
|
||||||
@ -57,8 +62,15 @@ class EncryptedItemFactory(private val messageInformationDataFactory: MessageInf
|
|||||||
return MessageTextItem_()
|
return MessageTextItem_()
|
||||||
.message(spannableStr)
|
.message(spannableStr)
|
||||||
.informationData(informationData)
|
.informationData(informationData)
|
||||||
|
.avatarCallback(callback)
|
||||||
// TODO Handle click on this event
|
.cellClickListener(
|
||||||
|
DebouncedClickListener(View.OnClickListener { view ->
|
||||||
|
callback?.onEncryptedMessageClicked(informationData, view)
|
||||||
|
}))
|
||||||
|
.longClickListener { view ->
|
||||||
|
return@longClickListener callback?.onEventLongClicked(informationData, null, view)
|
||||||
|
?: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ class TimelineItemFactory(private val messageItemFactory: MessageItemFactory,
|
|||||||
|
|
||||||
// Crypto
|
// Crypto
|
||||||
EventType.ENCRYPTION -> encryptionItemFactory.create(event)
|
EventType.ENCRYPTION -> encryptionItemFactory.create(event)
|
||||||
EventType.ENCRYPTED -> encryptedItemFactory.create(event, nextEvent)
|
EventType.ENCRYPTED -> encryptedItemFactory.create(event, nextEvent, callback)
|
||||||
|
|
||||||
// Unhandled event types (yet)
|
// Unhandled event types (yet)
|
||||||
EventType.STATE_ROOM_THIRD_PARTY_INVITE,
|
EventType.STATE_ROOM_THIRD_PARTY_INVITE,
|
||||||
|
Loading…
Reference in New Issue
Block a user