From a182f3e699f290776a1f1b3df8e2341c67b3f814 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Thu, 15 Sep 2022 15:13:35 +0100 Subject: [PATCH] Fix bug with tracking & merge community changes --- VERSION | 2 +- protocol/common/message_sender.go | 81 ++++++++++++++++--------------- protocol/messenger_response.go | 5 +- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/VERSION b/VERSION index 068bced37..8ec643b24 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.110.0 +0.110.1 diff --git a/protocol/common/message_sender.go b/protocol/common/message_sender.go index c43035e35..547345f3c 100644 --- a/protocol/common/message_sender.go +++ b/protocol/common/message_sender.go @@ -275,53 +275,54 @@ func (s *MessageSender) sendCommunity( return nil, err } } - } else { - wrappedMessage, err := s.wrapMessageV1(rawMessage) + return nil, nil + } + + wrappedMessage, err := s.wrapMessageV1(rawMessage) + if err != nil { + return nil, err + } + + // If it's a chat message, we send it on the community chat topic + if rawMessage.MessageType == protobuf.ApplicationMetadataMessage_CHAT_MESSAGE { + messageSpec, err := s.protocol.BuildHashRatchetMessage(rawMessage.CommunityID, wrappedMessage) if err != nil { return nil, err } - // If it's a chat message, we send it on the community chat topic - if rawMessage.MessageType == protobuf.ApplicationMetadataMessage_CHAT_MESSAGE { - messageSpec, err := s.protocol.BuildHashRatchetMessage(rawMessage.CommunityID, wrappedMessage) - if err != nil { - return nil, err - } - - payload, err := proto.Marshal(messageSpec.Message) - if err != nil { - return nil, errors.Wrap(err, "failed to marshal") - } - hash, newMessage, err = s.sendCommunityChatMessage(ctx, rawMessage, payload) - if err != nil { - return nil, err - } - - sentMessage := &SentMessage{ - Spec: messageSpec, - MessageIDs: messageIDs, - } - - s.notifyOnSentMessage(sentMessage) - - } else { - - payload := wrappedMessage - - pubkey, err := crypto.DecompressPubkey(rawMessage.CommunityID) - if err != nil { - return nil, errors.Wrap(err, "failed to decompress pubkey") - } - hash, newMessage, err = s.sendCommunityMessage(ctx, pubkey, payload, messageIDs) - if err != nil { - s.logger.Error("failed to send a community message", zap.Error(err)) - return nil, errors.Wrap(err, "failed to send a message spec") - } - - s.logger.Debug("sent community message ", zap.String("messageID", messageID.String()), zap.String("hash", types.EncodeHex(hash))) + payload, err := proto.Marshal(messageSpec.Message) + if err != nil { + return nil, errors.Wrap(err, "failed to marshal") + } + hash, newMessage, err = s.sendCommunityChatMessage(ctx, rawMessage, payload) + if err != nil { + return nil, err } + sentMessage := &SentMessage{ + Spec: messageSpec, + MessageIDs: messageIDs, + } + + s.notifyOnSentMessage(sentMessage) + + } else { + + payload := wrappedMessage + + pubkey, err := crypto.DecompressPubkey(rawMessage.CommunityID) + if err != nil { + return nil, errors.Wrap(err, "failed to decompress pubkey") + } + hash, newMessage, err = s.sendCommunityMessage(ctx, pubkey, payload, messageIDs) + if err != nil { + s.logger.Error("failed to send a community message", zap.Error(err)) + return nil, errors.Wrap(err, "failed to send a message spec") + } + + s.logger.Debug("sent community message ", zap.String("messageID", messageID.String()), zap.String("hash", types.EncodeHex(hash))) } + s.transport.Track(messageIDs, hash, newMessage) return messageID, nil } diff --git a/protocol/messenger_response.go b/protocol/messenger_response.go index 249e34281..ed32add03 100644 --- a/protocol/messenger_response.go +++ b/protocol/messenger_response.go @@ -255,10 +255,8 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error { len(response.Bookmarks)+ len(response.clearedHistories)+ len(response.VerificationRequests)+ - len(response.trustStatus)+ len(response.DiscordChannels)+ - len(response.DiscordCategories)+ - len(response.CommunityChanges) != 0 { + len(response.DiscordCategories) != 0 { return ErrNotImplemented } @@ -272,6 +270,7 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error { r.AddVerificationRequests(response.VerificationRequests) r.AddTrustStatuses(response.trustStatus) r.AddActivityCenterNotifications(response.ActivityCenterNotifications()) + r.CommunityChanges = append(r.CommunityChanges, response.CommunityChanges...) return nil }