@@ -64,11 +64,6 @@ func (h *EventHandler) handleMessage(ctx context.Context, chatID *commonpb.ChatI
6464 h .log .Debug ("Dropping push, no content" )
6565 return nil
6666 }
67- // todo: filter by speakers?
68- if msg .WasSenderOffStage {
69- h .log .Debug ("Dropping push, sender was off stage" )
70- return nil
71- }
7267
7368 sender , err := h .profiles .GetProfile (ctx , msg .SenderId )
7469 if errors .Is (err , profile .ErrNotFound ) {
@@ -82,6 +77,33 @@ func (h *EventHandler) handleMessage(ctx context.Context, chatID *commonpb.ChatI
8277 return fmt .Errorf ("failed to get chat: %w" , err )
8378 }
8479
80+ var title string
81+ switch md .Type {
82+ case chatpb .Metadata_GROUP :
83+ if md .Owner == nil || ! bytes .Equal (md .Owner .Value , msg .SenderId .Value ) {
84+ h .log .Debug ("Dropping push, sender is not owner" )
85+ return nil
86+ }
87+
88+ title = fmt .Sprintf ("#%d" , md .RoomNumber )
89+ if len (md .DisplayName ) > 0 {
90+ title = fmt .Sprintf ("#%d: %s" , md .RoomNumber , md .DisplayName )
91+ }
92+ case chatpb .Metadata_TWO_WAY :
93+ title = sender .DisplayName
94+ }
95+
96+ var pushPreview string
97+ switch typed := msg .Content [0 ].Type .(type ) {
98+ case * messagingpb.Content_Text :
99+ pushPreview = typed .Text .Text
100+ case * messagingpb.Content_Reply :
101+ // todo: this needs tests
102+ pushPreview = typed .Reply .ReplyText
103+ default :
104+ return nil
105+ }
106+
85107 members , err := h .chats .GetMembers (ctx , chatID )
86108 if err != nil {
87109 return fmt .Errorf ("failed to get chat members: %w" , err )
@@ -103,28 +125,6 @@ func (h *EventHandler) handleMessage(ctx context.Context, chatID *commonpb.ChatI
103125 return nil
104126 }
105127
106- var pushPreview string
107- switch typed := msg .Content [0 ].Type .(type ) {
108- case * messagingpb.Content_Text :
109- pushPreview = typed .Text .Text
110- case * messagingpb.Content_Reply :
111- // todo: this needs tests
112- pushPreview = typed .Reply .ReplyText
113- default :
114- return nil
115- }
116-
117- var title string
118- switch md .Type {
119- case chatpb .Metadata_GROUP :
120- title = fmt .Sprintf ("#%d" , md .RoomNumber )
121- if len (md .DisplayName ) > 0 {
122- title = fmt .Sprintf ("#%d: %s" , md .RoomNumber , md .DisplayName )
123- }
124- case chatpb .Metadata_TWO_WAY :
125- title = sender .DisplayName
126- }
127-
128128 data := make (map [string ]string )
129129 if err := h .pusher .SendPushes (ctx , chatID , pushMembers , title , pushPreview , & sender .DisplayName , data ); err != nil {
130130 h .log .Warn ("Failed to send pushes" , zap .String ("chat_id" , base64 .StdEncoding .EncodeToString (chatID .Value )), zap .Error (err ))
0 commit comments