Add the gallery timeline item rendered as a placeholder

Introduces the GalleryRoomTimelineItem and its typed GalleryItem model (reusing the existing per-message content types), builds it in the RoomTimelineItemFactory and routes it through RoomTimelineItemView. For now it renders as a placeholder; the grid/list media views and the full-screen preview land in follow-up PRs.

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
This commit is contained in:
Mauro Romito
2026-07-24 11:10:17 +02:00
committed by Mauro
parent 3796fdc966
commit 4a9cd02fbc
12 changed files with 289 additions and 22 deletions
@@ -95,7 +95,7 @@ struct SearchScreenMessage: Identifiable, Equatable {
content.formattedBody ?? AttributedString(content.body)
case .emote(let content):
content.formattedBody ?? AttributedString(content.body)
case .audio, .file, .image, .video:
case .audio, .file, .image, .video, .gallery:
nil
case .voice:
AttributedString(L10n.commonVoiceMessage)
@@ -130,7 +130,7 @@ struct SearchScreenMessage: Identifiable, Equatable {
return .init(title: content.caption ?? content.filename,
details: mediaDetails(filename: content.filename, fileSize: content.videoInfo.fileSize),
kind: .video(thumbnail: content.thumbnailInfo, blurhash: content.blurhash))
case .text, .notice, .emote, .voice, .location:
case .text, .notice, .emote, .voice, .location, .gallery:
return nil
}
}