mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 12:07:28 +00:00
Fix sharing gallery from pinned event timeline.
This commit is contained in:
+10
@@ -159,6 +159,7 @@ class MessagesFlowNode(
|
||||
|
||||
@Parcelize
|
||||
data class GalleryViewer(
|
||||
val fromPinnedMessages: Boolean,
|
||||
val eventId: EventId?,
|
||||
val galleryInfo: GalleryInfo,
|
||||
val canUseOverlay: Boolean,
|
||||
@@ -265,11 +266,13 @@ class MessagesFlowNode(
|
||||
}
|
||||
|
||||
override fun handleGalleryItemClick(
|
||||
timelineMode: Timeline.Mode,
|
||||
event: TimelineItem.Event,
|
||||
galleryItemIndex: Int,
|
||||
canUseOverlay: Boolean,
|
||||
): Boolean {
|
||||
return processGalleryEventClick(
|
||||
timelineMode = timelineMode,
|
||||
event = event,
|
||||
canUseOverlay = canUseOverlay,
|
||||
galleryItemIndex = galleryItemIndex,
|
||||
@@ -405,6 +408,7 @@ class MessagesFlowNode(
|
||||
eventId = navTarget.eventId,
|
||||
galleryInfo = navTarget.galleryInfo,
|
||||
galleryItems = navTarget.galleryItems,
|
||||
fromPinnedMessages = navTarget.fromPinnedMessages,
|
||||
)
|
||||
val callback = object : MediaViewerEntryPoint.Callback {
|
||||
override fun onDone() {
|
||||
@@ -520,6 +524,7 @@ class MessagesFlowNode(
|
||||
canUseOverlay: Boolean,
|
||||
) {
|
||||
processGalleryEventClick(
|
||||
timelineMode = Timeline.Mode.PinnedEvents,
|
||||
event = event,
|
||||
galleryItemIndex = galleryItemIndex,
|
||||
canUseOverlay = canUseOverlay,
|
||||
@@ -574,11 +579,13 @@ class MessagesFlowNode(
|
||||
}
|
||||
|
||||
override fun handleGalleryItemClick(
|
||||
timelineMode: Timeline.Mode,
|
||||
event: TimelineItem.Event,
|
||||
galleryItemIndex: Int,
|
||||
canUseOverlay: Boolean,
|
||||
): Boolean {
|
||||
return processGalleryEventClick(
|
||||
timelineMode = timelineMode,
|
||||
event = event,
|
||||
canUseOverlay = canUseOverlay,
|
||||
galleryItemIndex = galleryItemIndex,
|
||||
@@ -792,6 +799,7 @@ class MessagesFlowNode(
|
||||
}
|
||||
|
||||
private fun processGalleryEventClick(
|
||||
timelineMode: Timeline.Mode,
|
||||
event: TimelineItem.Event,
|
||||
galleryItemIndex: Int,
|
||||
canUseOverlay: Boolean,
|
||||
@@ -827,6 +835,7 @@ class MessagesFlowNode(
|
||||
galleryInfo = galleryInfo,
|
||||
canUseOverlay = canUseOverlay,
|
||||
galleryItems = galleryItems,
|
||||
fromPinnedMessages = timelineMode is Timeline.Mode.PinnedEvents
|
||||
)
|
||||
}
|
||||
is TimelineItemAttachmentsContent -> {
|
||||
@@ -859,6 +868,7 @@ class MessagesFlowNode(
|
||||
galleryInfo = galleryInfo,
|
||||
canUseOverlay = canUseOverlay,
|
||||
galleryItems = galleryItems,
|
||||
fromPinnedMessages = timelineMode is Timeline.Mode.PinnedEvents
|
||||
)
|
||||
}
|
||||
else -> null
|
||||
|
||||
+12
-3
@@ -119,7 +119,7 @@ class MessagesNode(
|
||||
|
||||
interface Callback : Plugin {
|
||||
fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event, canUseOverlay: Boolean): Boolean
|
||||
fun handleGalleryItemClick(event: TimelineItem.Event, galleryItemIndex: Int, canUseOverlay: Boolean): Boolean
|
||||
fun handleGalleryItemClick(timelineMode: Timeline.Mode, event: TimelineItem.Event, galleryItemIndex: Int, canUseOverlay: Boolean): Boolean
|
||||
fun navigateToPreviewAttachments(attachments: ImmutableList<Attachment>, inReplyToEventId: EventId?)
|
||||
fun navigateToRoomMemberDetails(userId: UserId)
|
||||
fun handlePermalinkClick(data: PermalinkData)
|
||||
@@ -290,8 +290,17 @@ class MessagesNode(
|
||||
}
|
||||
}
|
||||
},
|
||||
onGalleryEventItemClick = { event, index ->
|
||||
callback.handleGalleryItemClick(event, index, canUseOverlay)
|
||||
onGalleryEventItemClick = { isLive, event, index ->
|
||||
if (isLive) {
|
||||
callback.handleGalleryItemClick(timelineController.mainTimelineMode(), event, index, canUseOverlay)
|
||||
} else {
|
||||
val detachedTimelineMode = timelineController.detachedTimelineMode()
|
||||
if (detachedTimelineMode != null) {
|
||||
callback.handleGalleryItemClick(detachedTimelineMode, event, index, canUseOverlay)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
},
|
||||
onUserDataClick = callback::navigateToRoomMemberDetails,
|
||||
onLinkClick = { url, customTab ->
|
||||
|
||||
+8
-4
@@ -136,7 +136,7 @@ fun MessagesView(
|
||||
onBackClick: () -> Unit,
|
||||
onRoomDetailsClick: () -> Unit,
|
||||
onEventContentClick: (isLive: Boolean, event: TimelineItem.Event) -> Boolean,
|
||||
onGalleryEventItemClick: (event: TimelineItem.Event, index: Int) -> Boolean,
|
||||
onGalleryEventItemClick: (isLive: Boolean, event: TimelineItem.Event, index: Int) -> Boolean,
|
||||
onUserDataClick: (UserId) -> Unit,
|
||||
onLinkClick: (String, Boolean) -> Unit,
|
||||
onSendLocationClick: () -> Unit,
|
||||
@@ -260,7 +260,11 @@ fun MessagesView(
|
||||
state = state,
|
||||
onContentClick = ::onContentClick,
|
||||
onGalleryItemClick = { event, index ->
|
||||
val hideKeyboard = onGalleryEventItemClick(event, index)
|
||||
val hideKeyboard = onGalleryEventItemClick(
|
||||
state.timelineState.isLive,
|
||||
event,
|
||||
index,
|
||||
)
|
||||
if (hideKeyboard) {
|
||||
localView.hideKeyboard()
|
||||
}
|
||||
@@ -646,6 +650,7 @@ internal fun MessagesViewPreview(@PreviewParameter(MessagesStateProvider::class)
|
||||
onBackClick = {},
|
||||
onRoomDetailsClick = {},
|
||||
onEventContentClick = { _, _ -> false },
|
||||
onGalleryEventItemClick = { _, _, _ -> false },
|
||||
onUserDataClick = {},
|
||||
onLinkClick = { _, _ -> },
|
||||
onSendLocationClick = {},
|
||||
@@ -655,7 +660,6 @@ internal fun MessagesViewPreview(@PreviewParameter(MessagesStateProvider::class)
|
||||
forceJumpToBottomVisibility = true,
|
||||
knockRequestsBannerView = {},
|
||||
onThreadsListClick = {},
|
||||
onGalleryEventItemClick = { _, _ -> false },
|
||||
)
|
||||
}
|
||||
|
||||
@@ -702,6 +706,7 @@ internal fun MessagesViewA11yPreview() = ElementPreview {
|
||||
onBackClick = {},
|
||||
onRoomDetailsClick = {},
|
||||
onEventContentClick = { _, _ -> false },
|
||||
onGalleryEventItemClick = { _, _, _ -> false },
|
||||
onUserDataClick = {},
|
||||
onLinkClick = { _, _ -> },
|
||||
onSendLocationClick = {},
|
||||
@@ -709,7 +714,6 @@ internal fun MessagesViewA11yPreview() = ElementPreview {
|
||||
onJoinCallClick = {},
|
||||
onViewAllPinnedMessagesClick = {},
|
||||
onThreadsListClick = {},
|
||||
onGalleryEventItemClick = { _, _ -> false },
|
||||
forceJumpToBottomVisibility = true,
|
||||
knockRequestsBannerView = {},
|
||||
)
|
||||
|
||||
+1
-1
@@ -35,6 +35,7 @@ internal fun MessagesViewWithIdentityChangePreview(
|
||||
onBackClick = {},
|
||||
onRoomDetailsClick = {},
|
||||
onEventContentClick = { _, _ -> false },
|
||||
onGalleryEventItemClick = { _, _, _ -> false },
|
||||
onUserDataClick = {},
|
||||
onLinkClick = { _, _ -> },
|
||||
onSendLocationClick = {},
|
||||
@@ -43,6 +44,5 @@ internal fun MessagesViewWithIdentityChangePreview(
|
||||
onViewAllPinnedMessagesClick = {},
|
||||
knockRequestsBannerView = {},
|
||||
onThreadsListClick = {},
|
||||
onGalleryEventItemClick = { _, _ -> false },
|
||||
)
|
||||
}
|
||||
|
||||
+14
-3
@@ -126,7 +126,7 @@ class ThreadedMessagesNode(
|
||||
|
||||
interface Callback : Plugin {
|
||||
fun handleEventClick(timelineMode: Timeline.Mode, event: TimelineItem.Event, canUseOverlay: Boolean): Boolean
|
||||
fun handleGalleryItemClick(event: TimelineItem.Event, galleryItemIndex: Int, canUseOverlay: Boolean): Boolean
|
||||
fun handleGalleryItemClick(timelineMode: Timeline.Mode, event: TimelineItem.Event, galleryItemIndex: Int, canUseOverlay: Boolean): Boolean
|
||||
fun navigateToPreviewAttachments(attachments: ImmutableList<Attachment>, inReplyToEventId: EventId?)
|
||||
fun navigateToRoomMemberDetails(userId: UserId)
|
||||
fun handlePermalinkClick(data: PermalinkData)
|
||||
@@ -290,8 +290,19 @@ class ThreadedMessagesNode(
|
||||
}
|
||||
} == true
|
||||
},
|
||||
onGalleryEventItemClick = { event, index ->
|
||||
callback.handleGalleryItemClick(event, index, canUseOverlay)
|
||||
onGalleryEventItemClick = { isLive, event, index ->
|
||||
timelineController?.let { controller ->
|
||||
if (isLive) {
|
||||
callback.handleGalleryItemClick(controller.mainTimelineMode(), event, index, canUseOverlay)
|
||||
} else {
|
||||
val detachedTimelineMode = controller.detachedTimelineMode()
|
||||
if (detachedTimelineMode != null) {
|
||||
callback.handleGalleryItemClick(detachedTimelineMode, event, index, canUseOverlay)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
} == true
|
||||
},
|
||||
onUserDataClick = callback::navigateToRoomMemberDetails,
|
||||
onLinkClick = { url, customTab ->
|
||||
|
||||
Reference in New Issue
Block a user