@@ -390,19 +390,35 @@ public class MXThreadingService: NSObject {
390390 completion ? ( false )
391391 return
392392 }
393- if let redactedEventId = event. redacts,
394- let thread = thread ( withId: redactedEventId) ,
395- let newEvent = session. store? . event ( withEventId: redactedEventId,
396- inRoom: event. roomId) {
397- session. decryptEvents ( [ newEvent] , inTimeline: nil ) { _ in
393+ guard let redactedEventId = event. redacts,
394+ let redactedEvent = session. store? . event ( withEventId: redactedEventId,
395+ inRoom: event. roomId) else {
396+ completion ? ( false )
397+ return
398+ }
399+
400+ session. decryptEvents ( [ redactedEvent] , inTimeline: nil ) { _ in
401+ if let thread = self . thread ( withId: redactedEventId) {
398402 // event is a thread root
399- let handled = thread. replaceEvent ( withId: redactedEventId, with: newEvent )
403+ let handled = thread. replaceEvent ( withId: redactedEventId, with: redactedEvent )
400404 self . notifyDidUpdateThreads ( )
401405 completion ? ( handled)
406+ } else if let roomId = redactedEvent. roomId {
407+ var handled = false
408+ self . threads. filter { $1. roomId == roomId } . values. forEach {
409+ let handledForThread = $0. redactEvent ( withId: redactedEventId)
410+ if handled == false {
411+ handled = handledForThread
412+ }
413+ }
414+ if handled {
415+ self . notifyDidUpdateThreads ( )
416+ }
417+ completion ? ( handled)
418+ } else {
419+ completion ? ( false )
402420 }
403- return
404421 }
405- completion ? ( false )
406422 }
407423
408424 private func unsortedThreads( inRoom roomId: String ) -> [ MXThread ] {
0 commit comments