Composer mode UI updates (#984)

* Fixes #975 - Update editing message UI

* Fixes #976 - Update reply composer mode UI to include message being replied to

* Use different icon corner radii in the timeline reply view depending on its placement
This commit is contained in:
Stefan Ceriu
2023-05-31 14:51:51 +03:00
committed by GitHub
parent 87075eecfd
commit 83e3d828cd
19 changed files with 230 additions and 93 deletions
@@ -16,7 +16,17 @@
import Foundation
protocol EventBasedMessageTimelineItemProtocol: EventBasedTimelineItemProtocol {
var body: String { get }
var replyDetails: TimelineItemReplyDetails? { get }
enum EventBasedMessageTimelineItemContentType: Hashable {
case audio(AudioRoomTimelineItemContent)
case emote(EmoteRoomTimelineItemContent)
case file(FileRoomTimelineItemContent)
case image(ImageRoomTimelineItemContent)
case notice(NoticeRoomTimelineItemContent)
case text(TextRoomTimelineItemContent)
case video(VideoRoomTimelineItemContent)
}
protocol EventBasedMessageTimelineItemProtocol: EventBasedTimelineItemProtocol {
var replyDetails: TimelineItemReplyDetails? { get }
var contentType: EventBasedMessageTimelineItemContentType { get }
}
@@ -24,6 +24,8 @@ protocol EventBasedTimelineItemProtocol: RoomTimelineItemProtocol, CustomStringC
var sender: TimelineItemSender { get }
var body: String { get }
var properties: RoomTimelineItemProperties { get }
}
@@ -32,4 +32,8 @@ struct AudioRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiabl
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.audio(content)
}
}
@@ -33,4 +33,8 @@ struct EmoteRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.emote(content)
}
}
@@ -34,4 +34,8 @@ struct FileRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiable
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.file(content)
}
}
@@ -34,4 +34,8 @@ struct ImageRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiabl
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.image(content)
}
}
@@ -33,4 +33,8 @@ struct NoticeRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.notice(content)
}
}
@@ -34,4 +34,8 @@ struct TextRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable {
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.text(content)
}
}
@@ -34,4 +34,8 @@ struct VideoRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiabl
var body: String {
content.body
}
var contentType: EventBasedMessageTimelineItemContentType {
.video(content)
}
}
@@ -443,7 +443,7 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
avatarURL: nil)
}
let replyContent: TimelineItemReplyContent
let replyContent: EventBasedMessageTimelineItemContentType
switch message.msgtype() {
case .audio(let content):
replyContent = .audio(buildAudioTimelineItemContent(content))
@@ -463,7 +463,7 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
return nil
}
return .loaded(sender: sender, content: replyContent)
return .loaded(sender: sender, contentType: replyContent)
case let .error(message):
return .error(eventID: details.eventId, message: message)
}