mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
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:
+1
-11
@@ -16,19 +16,9 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
enum TimelineItemReplyContent: Hashable {
|
||||
case audio(AudioRoomTimelineItemContent)
|
||||
case emote(EmoteRoomTimelineItemContent)
|
||||
case file(FileRoomTimelineItemContent)
|
||||
case image(ImageRoomTimelineItemContent)
|
||||
case notice(NoticeRoomTimelineItemContent)
|
||||
case text(TextRoomTimelineItemContent)
|
||||
case video(VideoRoomTimelineItemContent)
|
||||
}
|
||||
|
||||
enum TimelineItemReplyDetails: Hashable {
|
||||
case notLoaded(eventID: String)
|
||||
case loading(eventID: String)
|
||||
case loaded(sender: TimelineItemSender, content: TimelineItemReplyContent)
|
||||
case loaded(sender: TimelineItemSender, contentType: EventBasedMessageTimelineItemContentType)
|
||||
case error(eventID: String, message: String)
|
||||
}
|
||||
|
||||
+13
-3
@@ -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 }
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -32,4 +32,8 @@ struct AudioRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiabl
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.audio(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -33,4 +33,8 @@ struct EmoteRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.emote(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -34,4 +34,8 @@ struct FileRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiable
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.file(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -34,4 +34,8 @@ struct ImageRoomTimelineItem: EventBasedMessageTimelineItemProtocol, Identifiabl
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.image(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -33,4 +33,8 @@ struct NoticeRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.notice(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -34,4 +34,8 @@ struct TextRoomTimelineItem: TextBasedRoomTimelineItem, Identifiable, Hashable {
|
||||
var body: String {
|
||||
content.body
|
||||
}
|
||||
|
||||
var contentType: EventBasedMessageTimelineItemContentType {
|
||||
.text(content)
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user