Fix editing items not in the timeline failing (#3075)

This commit is contained in:
Mauro
2024-07-22 13:15:57 +02:00
committed by GitHub
parent ab49274015
commit ff33c07596
10 changed files with 307 additions and 72 deletions
@@ -191,15 +191,38 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
html: String?,
intentionalMentions: IntentionalMentions) async {
MXLog.info("Edit message in \(roomID)")
MXLog.info("Editing timeline item: \(timelineItemID)")
switch await activeTimeline.edit(timelineItemID,
message: message,
html: html,
intentionalMentions: intentionalMentions) {
case .success:
MXLog.info("Finished editing message")
case .failure(let error):
MXLog.error("Failed editing message with error: \(error)")
let editMode: EditMode
if !timelineItemID.timelineID.isEmpty,
let timelineItem = liveTimelineProvider.itemProxies.firstEventTimelineItemUsingStableID(timelineItemID) {
editMode = .byEvent(timelineItem)
} else if let eventID = timelineItemID.eventID {
editMode = .byID(eventID)
} else {
MXLog.error("Unknown timeline item: \(timelineItemID)")
return
}
let messageContent = activeTimeline.buildMessageContentFor(message,
html: html,
intentionalMentions: intentionalMentions.toRustMentions())
switch editMode {
case let .byEvent(item):
switch await activeTimeline.edit(item, newContent: messageContent) {
case .success:
MXLog.info("Finished editing message by event")
case let .failure(error):
MXLog.error("Failed editing message by event with error: \(error)")
}
case let .byID(eventID):
switch await roomProxy.edit(eventID: eventID, newContent: messageContent) {
case .success:
MXLog.info("Finished editing message by event ID")
case let .failure(error):
MXLog.error("Failed editing message by event ID with error: \(error)")
}
}
}
@@ -408,3 +431,8 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
return nil
}
}
private enum EditMode {
case byEvent(EventTimelineItem)
case byID(String)
}