From 14f4c40404d4d3b1a4e9f739b156f8c8b2eeded6 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Thu, 3 Dec 2020 18:04:38 +0100 Subject: [PATCH] Split Merge into functions --- protocol/messenger_response.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/protocol/messenger_response.go b/protocol/messenger_response.go index c22e89654..0280bd990 100644 --- a/protocol/messenger_response.go +++ b/protocol/messenger_response.go @@ -18,12 +18,22 @@ func (m *MessengerResponse) IsEmpty() bool { return len(m.Chats) == 0 && len(m.Messages) == 0 && len(m.Contacts) == 0 && len(m.Installations) == 0 && len(m.Invitations) == 0 } +// Merge takes another response and appends the new Chats & new Messages and replaces +// the existing Messages & Chats if they have the same ID func (m *MessengerResponse) Merge(response *MessengerResponse) error { if len(response.Contacts)+len(response.Installations)+len(response.EmojiReactions)+len(response.Invitations) != 0 { return ErrNotImplemented } - for _, overrideChat := range response.Chats { + m.overrideChats(response.Chats) + m.overrideMessages(response.Messages) + + return nil +} + +// overrideChats append new chats and override existing ones in response.Chats +func (m *MessengerResponse) overrideChats(chats []*Chat) { + for _, overrideChat := range chats { var found = false for idx, chat := range m.Chats { if chat.ID == overrideChat.ID { @@ -35,8 +45,11 @@ func (m *MessengerResponse) Merge(response *MessengerResponse) error { m.Chats = append(m.Chats, overrideChat) } } +} - for _, overrideMessage := range response.Messages { +// overrideMessages append new messages and override existing ones in response.Messages +func (m *MessengerResponse) overrideMessages(messages []*common.Message) { + for _, overrideMessage := range messages { var found = false for idx, chat := range m.Messages { if chat.ID == overrideMessage.ID { @@ -48,6 +61,4 @@ func (m *MessengerResponse) Merge(response *MessengerResponse) error { m.Messages = append(m.Messages, overrideMessage) } } - - return nil }