@@ -34,6 +34,7 @@ func NewMessageThreadListener(
3434
3535 return l , map [string ]events.EventListener {
3636 events .EventTypeMessageAPISent : l .OnMessageAPISent ,
37+ events .MessageAPIDeleted : l .onMessageDeleted ,
3738 events .EventTypeMessagePhoneSending : l .OnMessagePhoneSending ,
3839 events .EventTypeMessagePhoneSent : l .OnMessagePhoneSent ,
3940 events .EventTypeMessagePhoneDelivered : l .OnMessagePhoneDelivered ,
@@ -73,6 +74,25 @@ func (listener *MessageThreadListener) OnMessageAPISent(ctx context.Context, eve
7374 return nil
7475}
7576
77+ // onMessageDeleted handles the events.MessageAPIDeleted event
78+ func (listener * MessageThreadListener ) onMessageDeleted (ctx context.Context , event cloudevents.Event ) error {
79+ ctx , span := listener .tracer .Start (ctx )
80+ defer span .End ()
81+
82+ var payload events.MessageAPIDeletedPayload
83+ if err := event .DataAs (& payload ); err != nil {
84+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
85+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
86+ }
87+
88+ if err := listener .service .UpdateAfterDeletedMessage (ctx , payload .UserID , payload .MessageID ); err != nil {
89+ msg := fmt .Sprintf ("cannot update thread for message with ID [%s] for event with ID [%s]" , payload .MessageID , event .ID ())
90+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
91+ }
92+
93+ return nil
94+ }
95+
7696// OnMessagePhoneSending handles the events.EventTypeMessagePhoneSending event
7797func (listener * MessageThreadListener ) OnMessagePhoneSending (ctx context.Context , event cloudevents.Event ) error {
7898 ctx , span := listener .tracer .Start (ctx )
0 commit comments