mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Reply to a poll (#2087)
* Refactor TimelineItemReplyDetails for polls * Fix reply for polls * Update reply details factory * Revert Poll Hashable conformance * PR comments
This commit is contained in:
@@ -628,47 +628,55 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
||||
avatarURL: nil)
|
||||
}
|
||||
|
||||
let replyContent: EventBasedMessageTimelineItemContentType
|
||||
|
||||
let replyContent: TimelineEventContent
|
||||
|
||||
switch timelineItem.kind() {
|
||||
case .message:
|
||||
switch timelineItem.asMessage()?.msgtype() {
|
||||
case .audio(let content):
|
||||
if content.voice != nil {
|
||||
replyContent = .voice(buildAudioTimelineItemContent(content))
|
||||
} else {
|
||||
replyContent = .audio(buildAudioTimelineItemContent(content))
|
||||
}
|
||||
case .emote(let content):
|
||||
replyContent = .emote(buildEmoteTimelineItemContent(senderDisplayName: sender.displayName, senderID: sender.id, messageContent: content))
|
||||
case .file(let content):
|
||||
replyContent = .file(buildFileTimelineItemContent(content))
|
||||
case .image(let content):
|
||||
replyContent = .image(buildImageTimelineItemContent(content))
|
||||
case .notice(let content):
|
||||
replyContent = .notice(buildNoticeTimelineItemContent(content))
|
||||
case .text(let content):
|
||||
replyContent = .text(buildTextTimelineItemContent(content))
|
||||
case .video(let content):
|
||||
replyContent = .video(buildVideoTimelineItemContent(content))
|
||||
case .location(let content):
|
||||
replyContent = .location(buildLocationTimelineItemContent(content))
|
||||
case .other, .none:
|
||||
replyContent = .text(.init(body: L10n.commonUnsupportedEvent))
|
||||
}
|
||||
return timelineItemReplyDetails(for: timelineItem.asMessage()?.msgtype(), sender: sender)
|
||||
case .poll(let question, _, _, _, _, _):
|
||||
replyContent = .text(.init(body: question))
|
||||
replyContent = .poll(question: question)
|
||||
case .sticker(let body, _, _):
|
||||
replyContent = .text(.init(body: body))
|
||||
replyContent = .message(.text(.init(body: body)))
|
||||
default:
|
||||
replyContent = .text(.init(body: L10n.commonUnsupportedEvent))
|
||||
replyContent = .message(.text(.init(body: L10n.commonUnsupportedEvent)))
|
||||
}
|
||||
|
||||
return .loaded(sender: sender, contentType: replyContent)
|
||||
return .loaded(sender: sender, eventContent: replyContent)
|
||||
case let .error(message):
|
||||
return .error(eventID: details.eventId, message: message)
|
||||
}
|
||||
}
|
||||
|
||||
private func timelineItemReplyDetails(for messageType: MessageType?, sender: TimelineItemSender) -> TimelineItemReplyDetails {
|
||||
let replyContent: EventBasedMessageTimelineItemContentType
|
||||
|
||||
switch messageType {
|
||||
case .audio(let content):
|
||||
if content.voice != nil {
|
||||
replyContent = .voice(buildAudioTimelineItemContent(content))
|
||||
} else {
|
||||
replyContent = .audio(buildAudioTimelineItemContent(content))
|
||||
}
|
||||
case .emote(let content):
|
||||
replyContent = .emote(buildEmoteTimelineItemContent(senderDisplayName: sender.displayName, senderID: sender.id, messageContent: content))
|
||||
case .file(let content):
|
||||
replyContent = .file(buildFileTimelineItemContent(content))
|
||||
case .image(let content):
|
||||
replyContent = .image(buildImageTimelineItemContent(content))
|
||||
case .notice(let content):
|
||||
replyContent = .notice(buildNoticeTimelineItemContent(content))
|
||||
case .text(let content):
|
||||
replyContent = .text(buildTextTimelineItemContent(content))
|
||||
case .video(let content):
|
||||
replyContent = .video(buildVideoTimelineItemContent(content))
|
||||
case .location(let content):
|
||||
replyContent = .location(buildLocationTimelineItemContent(content))
|
||||
case .other, .none:
|
||||
replyContent = .text(.init(body: L10n.commonUnsupportedEvent))
|
||||
}
|
||||
|
||||
return .loaded(sender: sender, eventContent: .message(replyContent))
|
||||
}
|
||||
}
|
||||
|
||||
private extension LocationRoomTimelineItemContent.AssetType {
|
||||
|
||||
Reference in New Issue
Block a user