Editing a failed echo, just cancels and resends it (#1207)

* editing a failed message means cancelling and resending it

* changelog
This commit is contained in:
Mauro
2023-06-29 16:37:52 +02:00
committed by GitHub
parent 3a6876f385
commit b2ab6103c3
3 changed files with 16 additions and 6 deletions
@@ -151,11 +151,20 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
func editMessage(_ newMessage: String, original itemID: String) async {
MXLog.info("Edit message in \(roomID)")
switch await roomProxy.editMessage(newMessage, original: itemID) {
case .success:
MXLog.info("Finished editing message")
case .failure(let error):
MXLog.error("Failed editing message with error: \(error)")
if let timelineItem = timelineItems.first(where: { $0.id == itemID }),
let item = timelineItem as? EventBasedTimelineItemProtocol,
item.hasFailedToSend,
let transactionID = item.properties.transactionID {
MXLog.info("Editing a failed echo, will cancel and resend it as a new message")
await cancelSend(transactionID)
await sendMessage(newMessage)
} else {
switch await roomProxy.editMessage(newMessage, original: itemID) {
case .success:
MXLog.info("Finished editing message")
case .failure(let error):
MXLog.error("Failed editing message with error: \(error)")
}
}
}