@@ -146,15 +146,11 @@ func (s *MessageService) SendMessage(ctx context.Context, req *models.SendMessag
146146 }
147147 }
148148
149- // The Validate function already matched the senderStr, so use it directly
150- // From the returned mappings, the first one should be the authenticated user
151- var senderMatrix string
152- if len (mappings ) > 0 {
153- senderMatrix = strings .TrimSpace (mappings [0 ].MatrixID )
154- }
149+ // Resolve sender to Matrix ID using mappings
150+ senderMatrix := s .resolveMatrixUser (req .From )
155151 if senderMatrix == "" {
156- logger .Error ().Str ("sender " , senderStr ).Msg ("auth returned empty MatrixID " )
157- return nil , ErrInvalidSender
152+ logger .Warn ().Str ("from " , req . From ).Msg ("resolved to empty Matrix user ID " )
153+ return nil , ErrAuthentication
158154 }
159155
160156 recipientStr := strings .TrimSpace (req .To )
@@ -163,35 +159,27 @@ func (s *MessageService) SendMessage(ctx context.Context, req *models.SendMessag
163159 return nil , ErrInvalidRecipient
164160 }
165161
166- // Resolve sender to a valid Matrix user ID
167- sender := s .resolveMatrixUser (senderMatrix )
168- if sender == "" {
169- logger .Warn ().Str ("sender" , senderMatrix ).Msg ("sender is not a valid Matrix user ID" )
170- return nil , ErrInvalidSender
171- }
172-
173162 // Resolve recipient to a valid Matrix user ID
174- recipient := s .resolveMatrixUser (recipientStr )
175- if recipient == "" {
163+ recipientMatrix := s .resolveMatrixUser (recipientStr )
164+ if recipientMatrix == "" {
176165 logger .Warn ().Str ("recipient" , recipientStr ).Msg ("recipient is not a valid Matrix user ID" )
177166 return nil , ErrInvalidRecipient
178167 }
179168
180- logger .Debug ().Str ("sender" , string (sender )).Str ("recipient" , string (recipient )).Msg ("resolved sender and recipient to Matrix user IDs" )
169+ logger .Debug ().Str ("sender" , string (senderMatrix )).Str ("recipient" , string (recipientMatrix )).Msg ("resolved sender and recipient to Matrix user IDs" )
181170
182171 // For 1-to-1 messaging, ensure a direct room exists between sender and recipient
183- roomID , err := s .ensureDirectRoom (ctx , sender , recipient )
172+ roomID , err := s .ensureDirectRoom (ctx , senderMatrix , recipientMatrix )
184173 if err != nil {
185- logger .Error ().Str ("sender" , string (sender )).Str ("recipient" , string (recipient )).Err (err ).Msg ("failed to ensure direct room" )
174+ logger .Error ().Str ("sender" , string (senderMatrix )).Str ("recipient" , string (recipientMatrix )).Err (err ).Msg ("failed to ensure direct room" )
186175 return nil , err
187176 }
188177
189- logger .Debug ().Str ("sender" , string (sender )).Str ("recipient" , string (recipient )).Str ("room_id" , string (roomID )).Msg ("sending message to direct room" )
190-
178+ logger .Debug ().Str ("sender" , string (senderMatrix )).Str ("recipient" , string (recipientMatrix )).Str ("room_id" , string (roomID )).Msg ("sending message to direct room" )
191179 // Ensure the sender is a member of the room (in case join failed during room creation)
192- _ , err = s .matrixClient .JoinRoom (ctx , sender , roomID )
180+ _ , err = s .matrixClient .JoinRoom (ctx , senderMatrix , roomID )
193181 if err != nil {
194- logger .Error ().Str ("sender" , string (sender )).Str ("room_id" , string (roomID )).Err (err ).Msg ("failed to join room" )
182+ logger .Error ().Str ("sender" , string (senderMatrix )).Str ("room_id" , string (roomID )).Err (err ).Msg ("failed to join room" )
195183 return nil , fmt .Errorf ("send message: %w" , err )
196184 }
197185
@@ -200,13 +188,13 @@ func (s *MessageService) SendMessage(ctx context.Context, req *models.SendMessag
200188 Body : req .Body ,
201189 }
202190
203- resp , err := s .matrixClient .SendMessage (ctx , sender , roomID , content )
191+ resp , err := s .matrixClient .SendMessage (ctx , senderMatrix , roomID , content )
204192 if err != nil {
205- logger .Error ().Str ("sender" , string (sender )).Str ("room_id" , string (roomID )).Err (err ).Msg ("failed to send message" )
193+ logger .Error ().Str ("sender" , string (senderMatrix )).Str ("room_id" , string (roomID )).Err (err ).Msg ("failed to send message" )
206194 return nil , fmt .Errorf ("send message: %w" , mapAuthErr (err ))
207195 }
208196
209- logger .Debug ().Str ("sender" , string (sender )).Str ("room_id" , string (roomID )).Str ("event_id" , string (resp .EventID )).Msg ("message sent successfully" )
197+ logger .Debug ().Str ("sender" , string (senderMatrix )).Str ("room_id" , string (roomID )).Str ("event_id" , string (resp .EventID )).Msg ("message sent successfully" )
210198 return & models.SendMessageResponse {ID : string (resp .EventID )}, nil
211199}
212200
0 commit comments