@@ -38,16 +38,17 @@ func NewMessageListener(
3838 }
3939
4040 return l , map [string ]events.EventListener {
41- events .EventTypeMessageAPISent : l .OnMessageAPISent ,
42- events .EventTypeMessagePhoneSending : l .OnMessagePhoneSending ,
43- events .EventTypeMessagePhoneSent : l .OnMessagePhoneSent ,
44- events .EventTypeMessagePhoneDelivered : l .OnMessagePhoneDelivered ,
45- events .EventTypeMessageSendFailed : l .OnMessagePhoneFailed ,
46- events .EventTypeMessagePhoneReceived : l .OnMessagePhoneReceived ,
47- events .EventTypeMessageNotificationSent : l .onMessageNotificationSent ,
48- events .EventTypeMessageNotificationFailed : l .onMessageNotificationFailed ,
49- events .EventTypeMessageSendExpiredCheck : l .onMessageSendExpiredCheck ,
50- events .EventTypeMessageSendExpired : l .onMessageSendExpired ,
41+ events .EventTypeMessageAPISent : l .OnMessageAPISent ,
42+ events .EventTypeMessagePhoneSending : l .OnMessagePhoneSending ,
43+ events .EventTypeMessagePhoneSent : l .OnMessagePhoneSent ,
44+ events .EventTypeMessagePhoneDelivered : l .OnMessagePhoneDelivered ,
45+ events .EventTypeMessageSendFailed : l .OnMessagePhoneFailed ,
46+ events .EventTypeMessagePhoneReceived : l .OnMessagePhoneReceived ,
47+ events .EventTypeMessageNotificationSent : l .onMessageNotificationSent ,
48+ events .EventTypeMessageNotificationFailed : l .onMessageNotificationFailed ,
49+ events .EventTypeMessageSendExpiredCheck : l .onMessageSendExpiredCheck ,
50+ events .EventTypeMessageSendExpired : l .onMessageSendExpired ,
51+ events .EventTypeMessageNotificationScheduled : l .onMessageNotificationScheduled ,
5152 }
5253}
5354
@@ -318,23 +319,34 @@ func (listener *MessageListener) onMessageNotificationSent(ctx context.Context,
318319 return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
319320 }
320321
321- storeParams := services.MessageScheduleExpirationParams {
322+ checkParams := services.MessageScheduleExpirationParams {
322323 MessageID : payload .MessageID ,
323324 UserID : payload .UserID ,
324325 NotificationSentAt : payload .NotificationSentAt ,
325326 PhoneID : payload .PhoneID ,
326327 Source : event .Source (),
327328 MessageExpirationDuration : payload .MessageExpirationDuration ,
328329 }
329- if err := listener .service .ScheduleExpirationCheck (ctx , storeParams ); err != nil {
330- msg := fmt .Sprintf ("cannot exchedule expiration check for ID [%s] and userID [%s]" , storeParams .MessageID , storeParams .UserID )
330+ if err := listener .service .ScheduleExpirationCheck (ctx , checkParams ); err != nil {
331+ msg := fmt .Sprintf ("cannot exchedule expiration check for ID [%s] and userID [%s]" , checkParams .MessageID , checkParams .UserID )
332+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
333+ }
334+
335+ handleParams := services.HandleMessageParams {
336+ ID : payload .MessageID ,
337+ UserID : payload .UserID ,
338+ Source : event .Source (),
339+ Timestamp : payload .NotificationSentAt ,
340+ }
341+ if err := listener .service .HandleMessageNotificationSent (ctx , handleParams ); err != nil {
342+ msg := fmt .Sprintf ("cannot handle event [%s] for message [%s] and userID [%s]" , event .Type (), checkParams .MessageID , checkParams .UserID )
331343 return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
332344 }
333345
334346 return nil
335347}
336348
337- // onMessageNotificationSent handles the events.EventTypeMessageSendExpiredCheck event
349+ // onMessageSendExpiredCheck handles the events.EventTypeMessageSendExpiredCheck event
338350func (listener * MessageListener ) onMessageSendExpiredCheck (ctx context.Context , event cloudevents.Event ) error {
339351 ctx , span := listener .tracer .Start (ctx )
340352 defer span .End ()
@@ -383,6 +395,31 @@ func (listener *MessageListener) onMessageSendExpired(ctx context.Context, event
383395 return nil
384396}
385397
398+ // onMessageNotificationScheduled handles the events.EventTypeMessageSendExpired event
399+ func (listener * MessageListener ) onMessageNotificationScheduled (ctx context.Context , event cloudevents.Event ) error {
400+ ctx , span := listener .tracer .Start (ctx )
401+ defer span .End ()
402+
403+ var payload events.MessageNotificationScheduledPayload
404+ if err := event .DataAs (& payload ); err != nil {
405+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
406+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
407+ }
408+
409+ expiredParams := services.HandleMessageParams {
410+ ID : payload .MessageID ,
411+ UserID : payload .UserID ,
412+ Source : event .Source (),
413+ Timestamp : payload .ScheduledAt ,
414+ }
415+ if err := listener .service .HandleMessageNotificationScheduled (ctx , expiredParams ); err != nil {
416+ msg := fmt .Sprintf ("cannot handle event [%s] for ID [%s] and userID [%s]" , event .Type (), expiredParams .ID , expiredParams .UserID )
417+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
418+ }
419+
420+ return nil
421+ }
422+
386423func (listener * MessageListener ) signature (event cloudevents.Event ) string {
387424 return listener .handlerSignature (listener , event )
388425}
0 commit comments