Skip to content

Commit

Permalink
Edit by timeline item only if the event id is missing (#2989)
Browse files Browse the repository at this point in the history
  • Loading branch information
Velin92 authored Jul 2, 2024
1 parent b2c9878 commit dac363c
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions ElementX/Sources/Services/Timeline/TimelineProxy.swift
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,12 @@ final class TimelineProxy: TimelineProxyProtocol {
intentionalMentions: IntentionalMentions) async -> Result<Void, TimelineProxyError> {
MXLog.info("Editing timeline item: \(timelineItemID)")

guard let eventTimelineItem = await timelineProvider.itemProxies.firstEventTimelineItemUsingID(timelineItemID) else {
let editMode: EditMode
if let eventID = timelineItemID.eventID {
editMode = .remote(eventID: eventID)
} else if let eventTimelineItem = await timelineProvider.itemProxies.firstEventTimelineItemUsingID(timelineItemID) {
editMode = .local(item: eventTimelineItem)
} else {
MXLog.error("Unknown timeline item: \(timelineItemID)")
return .failure(.failedEditing)
}
Expand All @@ -168,8 +173,13 @@ final class TimelineProxy: TimelineProxyProtocol {
intentionalMentions: intentionalMentions.toRustMentions())

do {
guard try await timeline.edit(item: eventTimelineItem, newContent: messageContent) == true else {
return .failure(.failedEditing)
switch editMode {
case let .local(item):
guard try await timeline.edit(item: item, newContent: messageContent) == true else {
return .failure(.failedEditing)
}
case let .remote(eventID):
try await timeline.editByEventId(eventId: eventID, newContent: messageContent)
}

MXLog.info("Finished editing timeline item: \(timelineItemID)")
Expand Down Expand Up @@ -615,3 +625,11 @@ extension Array where Element == TimelineItemProxy {
return eventTimelineItemProxy?.item
}
}

private enum EditMode {
/// edit for a message that is also found locally as a timeline item
case local(item: EventTimelineItem)

/// edit for a message that was not found locally
case remote(eventID: String)
}

0 comments on commit dac363c

Please sign in to comment.