Skip to content

Commit a0ddd5d

Browse files
committed
Bind phone received events
1 parent bdc87df commit a0ddd5d

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

api/pkg/listeners/websocket_listener.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ func NewWebsocketListener(
3232
}
3333

3434
return l, map[string]events.EventListener{
35-
events.EventTypePhoneUpdated: l.onPhoneUpdated,
36-
events.EventTypeMessagePhoneSent: l.onMessagePhoneSent,
37-
events.EventTypeMessageSendFailed: l.onMessagePhoneFailed,
35+
events.EventTypePhoneUpdated: l.onPhoneUpdated,
36+
events.EventTypeMessagePhoneSent: l.onMessagePhoneSent,
37+
events.EventTypeMessageSendFailed: l.onMessagePhoneFailed,
38+
events.EventTypeMessagePhoneReceived: l.onMessagePhoneReceived,
3839
}
3940
}
4041

@@ -57,6 +58,25 @@ func (listener *WebsocketListener) onMessagePhoneSent(ctx context.Context, event
5758
return nil
5859
}
5960

61+
// onMessagePhoneReceived handles the events.EventTypeMessagePhoneReceived event
62+
func (listener *WebsocketListener) onMessagePhoneReceived(ctx context.Context, event cloudevents.Event) error {
63+
ctx, span, _ := listener.tracer.StartWithLogger(ctx, listener.logger)
64+
defer span.End()
65+
66+
var payload events.MessagePhoneReceivedPayload
67+
if err := event.DataAs(&payload); err != nil {
68+
msg := fmt.Sprintf("cannot decode [%s] into [%T]", event.Data(), payload)
69+
return listener.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
70+
}
71+
72+
if err := listener.client.Trigger(payload.UserID.String(), event.Type(), event.ID()); err != nil {
73+
msg := fmt.Sprintf("cannot trigger websocket [%s] event with ID [%s] for user with ID [%s]", event.Type(), event.ID(), payload.UserID)
74+
return listener.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
75+
}
76+
77+
return nil
78+
}
79+
6080
// onMessagePhoneFailed handles the events.EventTypeMessageSendFailed event
6181
func (listener *WebsocketListener) onMessagePhoneFailed(ctx context.Context, event cloudevents.Event) error {
6282
ctx, span, _ := listener.tracer.StartWithLogger(ctx, listener.logger)

0 commit comments

Comments
 (0)