Fix bug with tracking & merge community changes

This commit is contained in:
Andrea Maria Piana 2022-09-15 15:13:35 +01:00
parent 824bb17ba9
commit a182f3e699
3 changed files with 44 additions and 44 deletions

View File

@ -1 +1 @@
0.110.0
0.110.1

View File

@ -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
}

View File

@ -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
}