@@ -315,6 +315,7 @@ func (m *Messenger) updateAcceptedContactRequest(response *MessengerResponse, co
315315 return nil , err
316316 }
317317
318+ previouslyAccepted := contactRequest .ContactRequestState == common .ContactRequestStateAccepted
318319 contactRequest .ContactRequestState = common .ContactRequestStateAccepted
319320
320321 err = m .persistence .SetContactRequestState (contactRequest .ID , contactRequest .ContactRequestState )
@@ -388,22 +389,24 @@ func (m *Messenger) updateAcceptedContactRequest(response *MessengerResponse, co
388389 response .AddMessage (contactRequest )
389390 response .AddContact (contact )
390391
391- // Add mutual state update message for incoming contact request
392- clock , timestamp := chat .NextClockAndTimestamp (m .getTimesource ())
393- updateMessage , err := m .prepareMutualStateUpdateMessage (contact .ID , contacts .MutualStateUpdateTypeAdded , clock , timestamp , true )
394- if err != nil {
395- return nil , err
396- }
392+ // Add mutual state update message only on first acceptance.
393+ if ! previouslyAccepted {
394+ clock , timestamp := chat .NextClockAndTimestamp (m .getTimesource ())
395+ updateMessage , err := m .prepareMutualStateUpdateMessage (contact .ID , contacts .MutualStateUpdateTypeAdded , clock , timestamp , true )
396+ if err != nil {
397+ return nil , err
398+ }
397399
398- err = m .prepareMessage (updateMessage , m .httpServer )
399- if err != nil {
400- return nil , err
401- }
402- err = m .persistence .SaveMessages ([]* common.Message {updateMessage })
403- if err != nil {
404- return nil , err
400+ err = m .prepareMessage (updateMessage , m .httpServer )
401+ if err != nil {
402+ return nil , err
403+ }
404+ err = m .persistence .SaveMessages ([]* common.Message {updateMessage })
405+ if err != nil {
406+ return nil , err
407+ }
408+ response .AddMessage (updateMessage )
405409 }
406- response .AddMessage (updateMessage )
407410 response .AddChat (chat )
408411
409412 return response , nil
0 commit comments