Change to map in messenger response

This commit is contained in:
Andrea Maria Piana 2021-06-03 15:11:55 +02:00
parent 217bace570
commit 5d856adc0c
17 changed files with 276 additions and 233 deletions

View File

@ -135,7 +135,10 @@ type Message struct {
// CommunityID is the id of the community to advertise
CommunityID string `json:"communityId,omitempty"`
New bool `json:"new,omitempty"`
// Replace indicates that this is a replacement of a message
// that has been updated
Replace string `json:"replace,omitempty"`
New bool `json:"new,omitempty"`
SigPubKey *ecdsa.PublicKey `json:"-"`

View File

@ -141,8 +141,8 @@ func (s *MessengerCommunitiesSuite) TestRetrieveCommunity() {
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Equal(community.IDString(), response.Messages[0].CommunityID)
s.Require().Len(response.Messages(), 1)
s.Require().Equal(community.IDString(), response.Messages()[0].CommunityID)
}
func (s *MessengerCommunitiesSuite) TestJoinCommunity() {
@ -241,8 +241,8 @@ func (s *MessengerCommunitiesSuite) TestJoinCommunity() {
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Equal(community.IDString(), response.Messages[0].CommunityID)
s.Require().Len(response.Messages(), 1)
s.Require().Equal(community.IDString(), response.Messages()[0].CommunityID)
// We join the org
response, err = s.alice.JoinCommunity(community.ID())
@ -463,14 +463,14 @@ func (s *MessengerCommunitiesSuite) TestPostToCommunityChat() {
if err != nil {
return err
}
if len(response.Messages) == 0 {
if len(response.messages) == 0 {
return errors.New("message not received")
}
return nil
})
s.Require().NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
s.Require().Len(response.Chats(), 1)
s.Require().Equal(chatID, response.Chats()[0].ID)
}
@ -978,7 +978,7 @@ func (s *MessengerCommunitiesSuite) TestShareCommunity() {
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
// Add bob to contacts so it does not go on activity center
bobPk := common.PubkeyToHex(&s.alice.identity.PublicKey)
@ -991,14 +991,14 @@ func (s *MessengerCommunitiesSuite) TestShareCommunity() {
if err != nil {
return err
}
if len(response.Messages) == 0 {
if len(response.messages) == 0 {
return errors.New("community link not received")
}
return nil
})
s.Require().NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
}
func (s *MessengerCommunitiesSuite) TestBanUser() {

View File

@ -162,7 +162,7 @@ func (m *MessageHandler) HandleMembershipUpdate(messageState *ReceivedMessageSta
if exists {
continue
}
messageState.Response.Messages = append(messageState.Response.Messages, message)
messageState.Response.AddMessage(message)
}
messageState.Response.AddChat(chat)
@ -263,7 +263,7 @@ func (m *MessageHandler) handleCommandMessage(state *ReceivedMessageState, messa
// Add to response
state.Response.AddChat(chat)
if message != nil {
state.Response.Messages = append(state.Response.Messages, message)
state.Response.AddMessage(message)
}
// Set in the modified maps chat
@ -623,13 +623,13 @@ func (m *MessageHandler) HandleChatMessage(state *ReceivedMessageState) error {
state.Response.CommunityChanges = append(state.Response.CommunityChanges, communityResponse.Changes)
}
if len(receivedMessage.Replace) != 0 {
if len(receivedMessage.OriginalMessageId) != 0 {
if receivedMessage.ContentType != protobuf.ChatMessage_EDIT {
return errors.New("replace can only be used with an edit content type")
}
}
state.Response.Messages = append(state.Response.Messages, receivedMessage)
state.Response.AddMessage(receivedMessage)
return nil
}

View File

@ -47,6 +47,7 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
command_state,
command_signature,
replace_message,
original_message_id,
rtl,
line_count,
response_to,
@ -87,6 +88,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
m1.command_state,
m1.command_signature,
m1.replace_message,
m1.original_message_id,
m1.rtl,
m1.line_count,
m1.response_to,
@ -127,6 +129,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
var communityID sql.NullString
var gapFrom sql.NullInt64
var gapTo sql.NullInt64
var originalMessageID sql.NullString
sticker := &protobuf.StickerMessage{}
command := &common.CommandParameters{}
@ -164,6 +167,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
&command.CommandState,
&command.Signature,
&message.Replace,
&originalMessageID,
&message.RTL,
&message.LineCount,
&message.ResponseTo,
@ -185,6 +189,10 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
return err
}
if originalMessageID.Valid {
message.OriginalMessageId = originalMessageID.String
}
if quotedText.Valid {
message.QuotedMessage = &common.QuotedMessage{
From: quotedFrom.String,
@ -318,6 +326,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
command.CommandState,
command.Signature,
message.Replace,
message.OriginalMessageId,
message.RTL,
message.LineCount,
message.ResponseTo,

View File

@ -1221,8 +1221,8 @@ func (m *Messenger) CreateGroupChatWithMembers(ctx context.Context, name string,
chat.updateChatFromGroupMembershipChanges(group)
response.AddChat(&chat)
response.Messages = buildSystemMessages(chat.MembershipUpdates, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages(chat.MembershipUpdates, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1296,8 +1296,8 @@ func (m *Messenger) RemoveMemberFromGroupChat(ctx context.Context, chatID string
chat.updateChatFromGroupMembershipChanges(group)
response.AddChat(chat)
response.Messages = buildSystemMessages(chat.MembershipUpdates, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages(chat.MembershipUpdates, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1382,8 +1382,8 @@ func (m *Messenger) AddMembersToGroupChat(ctx context.Context, chatID string, me
chat.updateChatFromGroupMembershipChanges(group)
response.AddChat(chat)
response.Messages = buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1444,8 +1444,8 @@ func (m *Messenger) ChangeGroupChatName(ctx context.Context, chatID string, name
var response MessengerResponse
response.AddChat(chat)
response.Messages = buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1644,8 +1644,8 @@ func (m *Messenger) AddAdminsToGroupChat(ctx context.Context, chatID string, mem
chat.updateChatFromGroupMembershipChanges(group)
response.AddChat(chat)
response.Messages = buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1708,8 +1708,8 @@ func (m *Messenger) ConfirmJoiningGroup(ctx context.Context, chatID string) (*Me
chat.Joined = int64(m.getTimesource().GetCurrentTime())
response.AddChat(chat)
response.Messages = buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -1768,8 +1768,8 @@ func (m *Messenger) LeaveGroupChat(ctx context.Context, chatID string, remove bo
}
chat.updateChatFromGroupMembershipChanges(group)
response.Messages = buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations)
err = m.persistence.SaveMessages(response.Messages)
response.AddMessages(buildSystemMessages([]v1protocol.MembershipUpdateEvent{event}, m.systemMessagesTranslations))
err = m.persistence.SaveMessages(response.Messages())
if err != nil {
return nil, err
}
@ -2071,11 +2071,11 @@ func (m *Messenger) sendChatMessage(ctx context.Context, message *common.Message
return nil, err
}
} else if message.ContentType == protobuf.ChatMessage_EDIT {
if len(message.Replace) == 0 {
if len(message.OriginalMessageId) == 0 {
return nil, errors.New("the id of the message to replace is required")
}
msgToReplace, err := m.persistence.MessageByID(message.Replace)
msgToReplace, err := m.persistence.MessageByID(message.OriginalMessageId)
if err != nil {
return nil, err
}
@ -2150,10 +2150,11 @@ func (m *Messenger) sendChatMessage(ctx context.Context, message *common.Message
return nil, err
}
response.Messages, err = m.pullMessagesAndResponsesFromDB([]*common.Message{message})
msg, err := m.pullMessagesAndResponsesFromDB([]*common.Message{message})
if err != nil {
return nil, err
}
response.SetMessages(msg)
response.AddChat(chat)
return &response, m.saveChat(chat)
@ -2998,8 +2999,9 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
}
}
if len(messageState.Response.Messages) > 0 {
err = m.SaveMessages(messageState.Response.Messages)
messagesToSave := messageState.Response.Messages()
if len(messageState.Response.messages) > 0 {
err = m.SaveMessages(messagesToSave)
if err != nil {
return nil, err
}
@ -3021,11 +3023,11 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
}
newMessagesIds := map[string]struct{}{}
for _, message := range messageState.Response.Messages {
for _, message := range messagesToSave {
newMessagesIds[message.ID] = struct{}{}
}
messagesWithResponses, err := m.pullMessagesAndResponsesFromDB(messageState.Response.Messages)
messagesWithResponses, err := m.pullMessagesAndResponsesFromDB(messagesToSave)
if err != nil {
return nil, err
}
@ -3033,13 +3035,13 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
for _, message := range messagesWithResponses {
messagesByID[message.ID] = message
}
messageState.Response.Messages = messagesWithResponses
messageState.Response.SetMessages(messagesWithResponses)
notificationsEnabled, err := m.settings.GetNotificationsEnabled()
if err != nil {
return nil, err
}
for _, message := range messageState.Response.Messages {
for _, message := range messageState.Response.messages {
if _, ok := newMessagesIds[message.ID]; ok {
message.New = true
@ -3296,7 +3298,7 @@ func (m *Messenger) RequestTransaction(ctx context.Context, chatID, value, contr
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3370,7 +3372,7 @@ func (m *Messenger) RequestAddressForTransaction(ctx context.Context, chatID, fr
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3463,7 +3465,7 @@ func (m *Messenger) AcceptRequestAddressForTransaction(ctx context.Context, mess
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3543,7 +3545,7 @@ func (m *Messenger) DeclineRequestTransaction(ctx context.Context, messageID str
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3623,7 +3625,7 @@ func (m *Messenger) DeclineRequestAddressForTransaction(ctx context.Context, mes
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3720,7 +3722,7 @@ func (m *Messenger) AcceptRequestTransaction(ctx context.Context, transactionHas
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3799,7 +3801,7 @@ func (m *Messenger) SendTransaction(ctx context.Context, chatID, value, contract
}
response.AddChat(chat)
response.Messages = []*common.Message{message}
response.AddMessages([]*common.Message{message})
return &response, m.saveChat(chat)
}
@ -3891,7 +3893,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
}
}
response.Messages = append(response.Messages, message)
response.AddMessage(message)
m.allChats.Store(chat.ID, chat)
response.AddChat(chat)
@ -3914,8 +3916,8 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
}
if len(response.Messages) > 0 {
err = m.SaveMessages(response.Messages)
if len(response.messages) > 0 {
err = m.SaveMessages(response.Messages())
if err != nil {
return nil, err
}

View File

@ -3,7 +3,6 @@ package protocol
import (
"context"
"crypto/ecdsa"
"fmt"
"testing"
"github.com/stretchr/testify/suite"
@ -75,43 +74,42 @@ func (s *MessengerEditMessageSuite) TestEditMessage() {
inputMessage := buildTestMessage(*theirChat)
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.messages) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
ogMessage := sendResponse.Messages[0]
ogMessage := sendResponse.Messages()[0]
editedMessage := buildTestMessage(*theirChat)
editedMessage.Replace = ogMessage.ID
editedMessage.OriginalMessageId = ogMessage.ID
editedMessage.ContentType = protobuf.ChatMessage_EDIT
sendResponse, err = theirMessenger.SendChatMessage(context.Background(), editedMessage)
s.NoError(err)
fmt.Println(sendResponse.Messages)
s.Require().Len(sendResponse.Messages, 1)
s.Require().NoError(err)
s.Require().Len(sendResponse.Messages(), 1)
response, err = WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.messages) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Equal(ogMessage.ID, response.Messages[0].Replace)
s.Require().Len(response.Messages(), 1)
s.Require().Equal(ogMessage.ID, response.Messages()[0].OriginalMessageId)
// Main instance user attempts to edit the message it received from theirMessenger
editedMessage = buildTestMessage(*ourChat)
editedMessage.Replace = ogMessage.ID
editedMessage.OriginalMessageId = ogMessage.ID
editedMessage.ContentType = protobuf.ChatMessage_EDIT
_, err = s.m.SendChatMessage(context.Background(), editedMessage)

View File

@ -95,14 +95,14 @@ func (s *MessengerEmojiSuite) TestSendEmoji() {
// Wait for message to arrive to bob
response, err := WaitOnMessengerResponse(
bob,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
messageID := response.Messages[0].ID
messageID := response.Messages()[0].ID
// Respond with an emoji, donald trump style
@ -184,11 +184,11 @@ func (s *MessengerEmojiSuite) TestEmojiPrivateGroup() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
alice,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no message received",
)
s.Require().NoError(err)
messageID := response.Messages[0].ID
messageID := response.Messages()[0].ID
_, err = bob.SendEmojiReaction(context.Background(), chat.ID, messageID, protobuf.EmojiReaction_SAD)
s.Require().NoError(err)

View File

@ -272,7 +272,7 @@ func (s *MessengerInstallationSuite) TestSyncInstallationNewMessages() {
// Wait for the message to reach its destination
_, err = WaitOnMessengerResponse(
bob2,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"message not received",
)
s.Require().NoError(err)

View File

@ -74,11 +74,11 @@ func (s *MessengerPinMessageSuite) TestPinMessage() {
inputMessage := buildTestMessage(*theirChat)
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)

View File

@ -11,7 +11,6 @@ import (
)
type MessengerResponse struct {
Messages []*common.Message
Contacts []*Contact
Installations []*multidevice.Installation
EmojiReactions []*EmojiReaction
@ -28,6 +27,7 @@ type MessengerResponse struct {
removedChats map[string]bool
communities map[string]*communities.Community
activityCenterNotifications map[string]*ActivityCenterNotification
messages map[string]*common.Message
pinMessages map[string]*common.PinMessage
}
@ -50,7 +50,6 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
Communities []*communities.Community `json:"communities,omitempty"`
ActivityCenterNotifications []*ActivityCenterNotification `json:"activityCenterNotifications,omitempty"`
}{
Messages: r.Messages,
Contacts: r.Contacts,
Installations: r.Installations,
EmojiReactions: r.EmojiReactions,
@ -60,6 +59,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
Mailservers: r.Mailservers,
}
responseItem.Messages = r.Messages()
responseItem.Notifications = r.Notifications()
responseItem.Chats = r.Chats()
responseItem.Communities = r.Communities()
@ -112,7 +112,7 @@ func (r *MessengerResponse) PinMessages() []*common.PinMessage {
func (r *MessengerResponse) IsEmpty() bool {
return len(r.chats)+
len(r.Messages)+
len(r.messages)+
len(r.pinMessages)+
len(r.Contacts)+
len(r.Installations)+
@ -144,29 +144,13 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error {
r.AddChats(response.Chats())
r.AddRemovedChats(response.RemovedChats())
r.AddNotifications(response.Notifications())
r.overrideMessages(response.Messages)
r.AddMessages(response.Messages())
r.AddCommunities(response.Communities())
r.AddPinMessages(response.PinMessages())
return nil
}
// overrideMessages append new messages and override existing ones in response.Messages
func (r *MessengerResponse) overrideMessages(messages []*common.Message) {
for _, overrideMessage := range messages {
var found = false
for idx, chat := range r.Messages {
if chat.ID == overrideMessage.ID {
r.Messages[idx] = overrideMessage
found = true
}
}
if !found {
r.Messages = append(r.Messages, overrideMessage)
}
}
}
func (r *MessengerResponse) AddCommunities(communities []*communities.Community) {
for _, overrideCommunity := range communities {
r.AddCommunity(overrideCommunity)
@ -263,6 +247,28 @@ func (r *MessengerResponse) AddPinMessages(pms []*common.PinMessage) {
}
}
func (r *MessengerResponse) AddMessage(message *common.Message) {
r.Messages = append(r.Messages, message)
func (r *MessengerResponse) Messages() []*common.Message {
var ms []*common.Message
for _, m := range r.messages {
ms = append(ms, m)
}
return ms
}
func (r *MessengerResponse) AddMessages(ms []*common.Message) {
for _, m := range ms {
r.AddMessage(m)
}
}
func (r *MessengerResponse) AddMessage(message *common.Message) {
if r.messages == nil {
r.messages = make(map[string]*common.Message)
}
r.messages[message.ID] = message
}
func (r *MessengerResponse) SetMessages(messages []*common.Message) {
r.messages = make(map[string]*common.Message)
r.AddMessages(messages)
}

View File

@ -30,19 +30,18 @@ func TestMessengerResponseMergeMessages(t *testing.T) {
message1 := &common.Message{ID: "1"}
modifiedMessage1 := &common.Message{ID: "1", From: "name"}
message2 := &common.Message{ID: "3"}
response1 := &MessengerResponse{
Messages: []*common.Message{message1},
}
response1 := &MessengerResponse{}
response1.AddMessage(message1)
response2 := &MessengerResponse{
Messages: []*common.Message{modifiedMessage1, message2},
}
response2 := &MessengerResponse{}
response2.AddMessage(modifiedMessage1)
response2.AddMessage(message2)
require.NoError(t, response1.Merge(response2))
require.Len(t, response1.Messages, 2)
require.Equal(t, modifiedMessage1, response1.Messages[0])
require.Equal(t, message2, response1.Messages[1])
require.Len(t, response1.Messages(), 2)
require.Equal(t, modifiedMessage1, response1.Messages()[0])
require.Equal(t, message2, response1.Messages()[1])
}
func TestMessengerResponseMergeNotImplemented(t *testing.T) {

View File

@ -409,8 +409,8 @@ func (s *MessengerSuite) TestSendPublic() {
response, err := s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0]
s.Require().Equal(1, len(response.Messages()), "it returns the message")
outputMessage := response.Messages()[0]
s.Require().Equal(uint64(100000000000001), outputMessage.Clock, "it correctly sets the clock")
s.Require().Equal(uint64(100000000000001), chat.LastClockValue, "it correctly sets the last-clock-value")
@ -435,8 +435,8 @@ func (s *MessengerSuite) TestSendProfile() {
response, err := s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0]
s.Require().Equal(1, len(response.Messages()), "it returns the message")
outputMessage := response.Messages()[0]
s.Require().Equal(uint64(100000000000001), outputMessage.Clock, "it correctly sets the clock")
s.Require().Equal(uint64(100000000000001), chat.LastClockValue, "it correctly sets the last-clock-value")
@ -466,8 +466,8 @@ func (s *MessengerSuite) TestSendPrivateOneToOne() {
s.NoError(err)
response, err := s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0]
s.Require().Equal(1, len(response.Messages()), "it returns the message")
outputMessage := response.Messages()[0]
s.Require().Equal(uint64(100000000000001), outputMessage.Clock, "it correctly sets the clock")
s.Require().Equal(uint64(100000000000001), chat.LastClockValue, "it correctly sets the last-clock-value")
@ -499,8 +499,8 @@ func (s *MessengerSuite) TestSendPrivateGroup() {
s.NoError(err)
response, err = s.m.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0]
s.Require().Equal(1, len(response.Messages()), "it returns the message")
outputMessage := response.Messages()[0]
s.Require().Equal(uint64(100000000000001), outputMessage.Clock, "it correctly sets the clock")
s.Require().Equal(uint64(100000000000001), chat.LastClockValue, "it correctly sets the last-clock-value")
@ -527,8 +527,8 @@ func (s *MessengerSuite) TestSendPrivateEmptyGroup() {
s.NoError(err)
response, err = s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0]
s.Require().Equal(1, len(response.Messages()), "it returns the message")
outputMessage := response.Messages()[0]
s.Require().Equal(uint64(100000000000001), outputMessage.Clock, "it correctly sets the clock")
s.Require().Equal(uint64(100000000000001), chat.LastClockValue, "it correctly sets the last-clock-value")
@ -556,9 +556,9 @@ func (s *MessengerSuite) TestRetrieveOwnPublic() {
response, err := s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
textMessage := response.Messages[0]
textMessage := response.Messages()[0]
s.Equal(textMessage.Text, text)
s.NotNil(textMessage.ParsedText)
@ -596,18 +596,18 @@ func (s *MessengerSuite) TestRetrieveTheirPublic() {
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
sentMessage := sendResponse.Messages[0]
sentMessage := sendResponse.Messages()[0]
// Wait for the message to reach its destination
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
s.Require().Len(response.Chats(), 1)
actualChat := response.Chats()[0]
// It sets the unviewed messages count
@ -639,7 +639,7 @@ func (s *MessengerSuite) TestDeletedAtClockValue() {
sentResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
chat.DeletedAtClockValue = sentResponse.Messages[0].Clock
chat.DeletedAtClockValue = sentResponse.Messages()[0].Clock
err = s.m.SaveChat(chat)
s.Require().NoError(err)
@ -647,7 +647,7 @@ func (s *MessengerSuite) TestDeletedAtClockValue() {
time.Sleep(100 * time.Millisecond)
response, err := s.m.RetrieveAll()
s.Require().NoError(err)
s.Require().Len(response.Messages, 0)
s.Require().Len(response.Messages(), 0)
s.Require().NoError(theirMessenger.Shutdown())
}
@ -685,7 +685,7 @@ func (s *MessengerSuite) TestRetrieveBlockedContact() {
time.Sleep(100 * time.Millisecond)
response, err := s.m.RetrieveAll()
s.Require().NoError(err)
s.Require().Len(response.Messages, 0)
s.Require().Len(response.Messages(), 0)
}
// Resend their public message, receive only once
@ -709,7 +709,7 @@ func (s *MessengerSuite) TestResendPublicMessage() {
sendResponse1, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
sentMessage := sendResponse1.Messages[0]
sentMessage := sendResponse1.Messages()[0]
err = theirMessenger.ReSendChatMessage(context.Background(), sentMessage.ID)
s.Require().NoError(err)
@ -717,12 +717,12 @@ func (s *MessengerSuite) TestResendPublicMessage() {
// Wait for the message to reach its destination
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
s.Require().Len(response.Chats(), 1)
actualChat := response.Chats()[0]
// It sets the unviewed messages count
@ -740,7 +740,7 @@ func (s *MessengerSuite) TestResendPublicMessage() {
time.Sleep(100 * time.Millisecond)
response, err = s.m.RetrieveAll()
s.Require().NoError(err)
s.Require().Len(response.Messages, 0)
s.Require().Len(response.Messages(), 0)
}
// Test receiving a message on an existing private chat
@ -763,13 +763,13 @@ func (s *MessengerSuite) TestRetrieveTheirPrivateChatExisting() {
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
sentMessage := sendResponse.Messages[0]
sentMessage := sendResponse.Messages()[0]
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
@ -800,14 +800,14 @@ func (s *MessengerSuite) TestRetrieveTheirPrivateChatNonExisting() {
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
sentMessage := sendResponse.Messages[0]
sentMessage := sendResponse.Messages()[0]
// Wait for the message to reach its destination
response, err := WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
@ -839,14 +839,14 @@ func (s *MessengerSuite) TestRetrieveTheirPublicChatNonExisting() {
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
// Wait for the message to reach its destination
time.Sleep(100 * time.Millisecond)
response, err := s.m.RetrieveAll()
s.NoError(err)
s.Require().Equal(len(response.Messages), 0)
s.Require().Equal(len(response.Messages()), 0)
s.Require().Equal(len(response.Chats()), 0)
s.Require().NoError(theirMessenger.Shutdown())
}
@ -896,13 +896,13 @@ func (s *MessengerSuite) TestRetrieveTheirPrivateGroupChat() {
sendResponse, err := theirMessenger.SendChatMessage(context.Background(), inputMessage)
s.NoError(err)
s.Require().Len(sendResponse.Messages, 1)
s.Require().Len(sendResponse.Messages(), 1)
sentMessage := sendResponse.Messages[0]
sentMessage := sendResponse.Messages()[0]
response, err = WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
@ -1552,7 +1552,7 @@ func (s *MessengerSuite) TestAddMembersToChat() {
response, err = s.m.AddMembersToGroupChat(context.Background(), chat.ID, members)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
chat = response.Chats()[0]
@ -1579,9 +1579,9 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
initialCommandID := senderMessage.ID
@ -1595,16 +1595,16 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
theirMessenger,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request address for transaction", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -1617,9 +1617,9 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
response, err = theirMessenger.DeclineRequestAddressForTransaction(context.Background(), receiverMessage.ID)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage = response.Messages[0]
senderMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Request address for transaction declined", senderMessage.Text)
s.Require().NotNil(senderMessage.CommandParameters)
@ -1632,15 +1632,15 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage = response.Messages[0]
receiverMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request address for transaction declined", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -1676,9 +1676,9 @@ func (s *MessengerSuite) TestSendEthTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Transaction sent", senderMessage.Text)
s.Require().NotNil(senderMessage.CommandParameters)
@ -1738,9 +1738,9 @@ func (s *MessengerSuite) TestSendEthTransaction() {
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Transaction received", receiverMessage.Text)
@ -1780,9 +1780,9 @@ func (s *MessengerSuite) TestSendTokenTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Transaction sent", senderMessage.Text)
s.Require().NotNil(senderMessage.CommandParameters)
@ -1842,9 +1842,9 @@ func (s *MessengerSuite) TestSendTokenTransaction() {
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Transaction received", receiverMessage.Text)
@ -1878,9 +1878,9 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
initialCommandID := senderMessage.ID
@ -1894,16 +1894,16 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
theirMessenger,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request address for transaction", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -1916,9 +1916,9 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
response, err = theirMessenger.AcceptRequestAddressForTransaction(context.Background(), receiverMessage.ID, "some-address")
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage = response.Messages[0]
senderMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Request address for transaction accepted", senderMessage.Text)
s.Require().NotNil(senderMessage.CommandParameters)
@ -1932,15 +1932,15 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage = response.Messages[0]
receiverMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request address for transaction accepted", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -1971,9 +1971,9 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
initialCommandID := senderMessage.ID
@ -1988,16 +1988,16 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
theirMessenger,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request transaction", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -2011,9 +2011,9 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage = response.Messages[0]
senderMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Transaction request declined", senderMessage.Text)
@ -2024,16 +2024,16 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
s.m,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage = response.Messages[0]
receiverMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Transaction request declined", receiverMessage.Text)
@ -2061,9 +2061,9 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage := response.Messages[0]
senderMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
initialCommandID := senderMessage.ID
@ -2078,16 +2078,16 @@ func (s *MessengerSuite) TestRequestTransaction() {
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
theirMessenger,
func(r *MessengerResponse) bool { return len(r.Messages) > 0 },
func(r *MessengerResponse) bool { return len(r.Messages()) > 0 },
"no messages",
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage := response.Messages[0]
receiverMessage := response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Request transaction", receiverMessage.Text)
s.Require().NotNil(receiverMessage.CommandParameters)
@ -2104,9 +2104,9 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
senderMessage = response.Messages[0]
senderMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, senderMessage.ContentType)
s.Require().Equal("Transaction sent", senderMessage.Text)
@ -2171,9 +2171,9 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().Len(response.Messages, 1)
s.Require().Len(response.Messages(), 1)
receiverMessage = response.Messages[0]
receiverMessage = response.Messages()[0]
s.Require().Equal(protobuf.ChatMessage_TRANSACTION_COMMAND, receiverMessage.ContentType)
s.Require().Equal("Transaction received", receiverMessage.Text)

View File

@ -36,6 +36,7 @@
// 1622464518_set_synced_to_from.up.sql (105B)
// 1622464519_add_chat_description.up.sql (93B)
// 1622622253_add_pinned_by_to_pin_messages.up.sql (52B)
// 1622722745_add_original_message_id.up.sql (66B)
// 1623938329_add_author_activity_center_notification_field.up.sql (66B)
// README.md (554B)
// doc.go (850B)
@ -827,6 +828,26 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
return a, nil
}
var __1622722745_add_original_message_idUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x2d\x4e\x2d\x8a\xcf\x4d\x2d\x2e\x4e\x4c\x4f\x2d\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\xc8\x2f\xca\x4c\xcf\xcc\x4b\xcc\x81\x49\xc6\x67\xa6\x28\x84\x39\x06\x39\x7b\x38\x06\x59\x73\x01\x02\x00\x00\xff\xff\x37\x5e\xdc\xd4\x42\x00\x00\x00")
func _1622722745_add_original_message_idUpSqlBytes() ([]byte, error) {
return bindataRead(
__1622722745_add_original_message_idUpSql,
"1622722745_add_original_message_id.up.sql",
)
}
func _1622722745_add_original_message_idUpSql() (*asset, error) {
bytes, err := _1622722745_add_original_message_idUpSqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "1622722745_add_original_message_id.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1624368024, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x94, 0x88, 0x73, 0xf6, 0x8e, 0x7f, 0xb1, 0xf2, 0xe, 0x6d, 0x30, 0x7c, 0xfd, 0x69, 0x26, 0xf5, 0x6, 0x97, 0x1d, 0x6f, 0xfb, 0x4b, 0xff, 0x9e, 0xcc, 0xa3, 0x5a, 0xac, 0xcc, 0x37, 0x63, 0xa4}}
return a, nil
}
var __1623938329_add_author_activity_center_notification_fieldUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\x4c\x2e\xc9\x2c\xcb\x2c\xa9\x8c\x4f\x4e\xcd\x2b\x49\x2d\x8a\xcf\xcb\x2f\xc9\x4c\xcb\x4c\x4e\x2c\xc9\xcc\xcf\x2b\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\x2c\x2d\xc9\xc8\x2f\x52\x08\x71\x8d\x08\xb1\xe6\x02\x04\x00\x00\xff\xff\xc4\xaa\x64\x1f\x42\x00\x00\x00")
func _1623938329_add_author_activity_center_notification_fieldUpSqlBytes() ([]byte, error) {
@ -1050,6 +1071,8 @@ var _bindata = map[string]func() (*asset, error){
"1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql,
"1622722745_add_original_message_id.up.sql": _1622722745_add_original_message_idUpSql,
"1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql,
"README.md": readmeMd,
@ -1134,6 +1157,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1622464518_set_synced_to_from.up.sql": &bintree{_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}},
"1622464519_add_chat_description.up.sql": &bintree{_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}},
"1622622253_add_pinned_by_to_pin_messages.up.sql": &bintree{_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}},
"1622722745_add_original_message_id.up.sql": &bintree{_1622722745_add_original_message_idUpSql, map[string]*bintree{}},
"1623938329_add_author_activity_center_notification_field.up.sql": &bintree{_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}},
"README.md": &bintree{readmeMd, map[string]*bintree{}},
"doc.go": &bintree{docGo, map[string]*bintree{}},

View File

@ -0,0 +1 @@
ALTER TABLE user_messages ADD COLUMN original_message_id VARCHAR;

View File

@ -283,9 +283,9 @@ type ChatMessage struct {
Payload isChatMessage_Payload `protobuf_oneof:"payload"`
// Grant for community chat messages
Grant []byte `protobuf:"bytes,13,opt,name=grant,proto3" json:"grant,omitempty"`
// Replace indicates that this is a replacement of a message
// original_message_id indicates that this is a edit of a message
// that has been updated
Replace string `protobuf:"bytes,14,opt,name=replace,proto3" json:"replace,omitempty"`
OriginalMessageId string `protobuf:"bytes,14,opt,name=original_message_id,json=originalMessageId,proto3" json:"original_message_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -442,9 +442,9 @@ func (m *ChatMessage) GetGrant() []byte {
return nil
}
func (m *ChatMessage) GetReplace() string {
func (m *ChatMessage) GetOriginalMessageId() string {
if m != nil {
return m.Replace
return m.OriginalMessageId
}
return ""
}
@ -473,46 +473,47 @@ func init() {
}
var fileDescriptor_263952f55fd35689 = []byte{
// 652 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0xcd, 0x6e, 0xd3, 0x4c,
0x14, 0xad, 0x5b, 0x27, 0x8e, 0xaf, 0xd3, 0xc8, 0x9a, 0xf6, 0x6b, 0xe7, 0x43, 0x08, 0x42, 0x84,
0x44, 0x56, 0x59, 0x94, 0x22, 0x75, 0x6b, 0x12, 0x2b, 0x35, 0xc5, 0x4e, 0x18, 0x4f, 0x80, 0xae,
0xac, 0xa9, 0x33, 0x34, 0x56, 0xeb, 0x1f, 0xc5, 0x13, 0x89, 0xac, 0x79, 0x27, 0xde, 0x88, 0xf7,
0x40, 0x33, 0xae, 0xeb, 0xb4, 0x1b, 0x56, 0xb9, 0xf7, 0xce, 0x39, 0xc7, 0x37, 0x67, 0xce, 0x00,
0x8a, 0x57, 0x4c, 0x44, 0x29, 0x2f, 0x4b, 0x76, 0xcb, 0x47, 0xc5, 0x3a, 0x17, 0x39, 0xea, 0xa8,
0x9f, 0x9b, 0xcd, 0x8f, 0x17, 0x16, 0xcf, 0x36, 0x69, 0x59, 0x8d, 0x07, 0x17, 0xd0, 0x0b, 0x45,
0x12, 0xdf, 0xf1, 0xb5, 0x5f, 0xc1, 0x11, 0x02, 0x7d, 0xc5, 0xca, 0x15, 0xd6, 0xfa, 0xda, 0xd0,
0x24, 0xaa, 0x96, 0xb3, 0x82, 0xc5, 0x77, 0x78, 0xbf, 0xaf, 0x0d, 0x5b, 0x44, 0xd5, 0x83, 0x2f,
0xd0, 0xf5, 0x52, 0x76, 0xcb, 0x6b, 0x1e, 0x06, 0xa3, 0x60, 0xdb, 0xfb, 0x9c, 0x2d, 0x15, 0xb5,
0x4b, 0xea, 0x16, 0xbd, 0x03, 0x5d, 0x6c, 0x0b, 0xae, 0xd8, 0xbd, 0xb3, 0xa3, 0x51, 0xbd, 0xc9,
0x48, 0xf1, 0xe9, 0xb6, 0xe0, 0x44, 0x01, 0x06, 0xbf, 0x35, 0xe8, 0x3a, 0x9b, 0x65, 0x92, 0xff,
0x5b, 0xf3, 0xfc, 0x89, 0x66, 0xbf, 0xd1, 0xdc, 0xe5, 0x57, 0x4d, 0xf3, 0x01, 0xf4, 0x1a, 0xac,
0xe5, 0x66, 0xcd, 0x44, 0x92, 0x67, 0x51, 0x5a, 0xe2, 0x83, 0xbe, 0x36, 0xd4, 0x09, 0xd4, 0x23,
0xbf, 0x1c, 0x7c, 0x00, 0xf3, 0x91, 0x83, 0x4e, 0x00, 0x2d, 0x82, 0xab, 0x60, 0xf6, 0x2d, 0x88,
0x9c, 0xc5, 0xc4, 0x9b, 0x45, 0xf4, 0x7a, 0xee, 0xda, 0x7b, 0xc8, 0x80, 0x03, 0xc7, 0x19, 0xdb,
0x9a, 0x2a, 0x7c, 0x62, 0xef, 0x0f, 0x7e, 0xb5, 0xc1, 0x1a, 0xaf, 0x98, 0xa8, 0xf7, 0x3e, 0x86,
0x56, 0x7c, 0x9f, 0xc7, 0x77, 0x6a, 0x6b, 0x9d, 0x54, 0x0d, 0x7a, 0x09, 0xa6, 0x48, 0x52, 0x5e,
0x0a, 0x96, 0x16, 0x6a, 0x71, 0x9d, 0x34, 0x03, 0xe9, 0xb1, 0xe0, 0x3f, 0x85, 0x5a, 0xca, 0x24,
0xaa, 0x96, 0xfb, 0xae, 0x79, 0x59, 0xe4, 0x59, 0xc9, 0x23, 0x91, 0x63, 0x5d, 0x1d, 0x41, 0x3d,
0xa2, 0x39, 0xfa, 0x1f, 0x3a, 0x3c, 0x2b, 0xa3, 0x8c, 0xa5, 0x1c, 0xb7, 0xd4, 0xa9, 0xc1, 0xb3,
0x32, 0x60, 0x29, 0x47, 0xa7, 0x60, 0xa8, 0x18, 0x24, 0x4b, 0xdc, 0x56, 0x27, 0x6d, 0xd9, 0x7a,
0x4b, 0x74, 0x01, 0xdd, 0x87, 0x68, 0x44, 0xca, 0x42, 0x43, 0x59, 0xf8, 0x5f, 0x63, 0xe1, 0xc3,
0xbf, 0x50, 0xbe, 0x59, 0x69, 0xd3, 0xa0, 0x09, 0x74, 0xe3, 0x3c, 0x13, 0x3c, 0x13, 0x15, 0xb3,
0xa3, 0x98, 0x6f, 0x1a, 0xe6, 0x8e, 0x07, 0xa3, 0x71, 0x85, 0xac, 0x54, 0xe2, 0xa6, 0x41, 0xe7,
0x60, 0x94, 0x55, 0xe4, 0xb0, 0xd9, 0xd7, 0x86, 0xd6, 0x19, 0x6e, 0x04, 0x9e, 0x66, 0xf1, 0x72,
0x8f, 0xd4, 0x50, 0x34, 0x82, 0x56, 0x22, 0xe3, 0x82, 0x41, 0x71, 0x4e, 0x9e, 0xa5, 0xa8, 0x61,
0x54, 0x30, 0x89, 0x67, 0xf2, 0x26, 0xb1, 0xf5, 0x1c, 0xbf, 0x9b, 0x10, 0x89, 0x57, 0x30, 0xf4,
0x0a, 0xcc, 0x38, 0x4f, 0xd3, 0x4d, 0x96, 0x88, 0x2d, 0xee, 0xca, 0xb0, 0x5d, 0xee, 0x91, 0x66,
0x24, 0xaf, 0xf4, 0x76, 0xcd, 0x32, 0x81, 0x0f, 0x55, 0x10, 0xab, 0x46, 0x06, 0x74, 0xcd, 0x8b,
0x7b, 0x16, 0x73, 0xdc, 0xab, 0xec, 0x7f, 0x68, 0x07, 0x7f, 0x34, 0xb0, 0x76, 0x2c, 0x40, 0x18,
0x8e, 0xeb, 0x30, 0x8d, 0x67, 0x01, 0x75, 0x03, 0x5a, 0xc7, 0xa9, 0x07, 0x40, 0xdd, 0xef, 0x34,
0x9a, 0x7f, 0x76, 0xbc, 0xc0, 0xd6, 0x90, 0x05, 0x46, 0x48, 0xbd, 0xf1, 0x95, 0x4b, 0xec, 0x7d,
0x04, 0xd0, 0x0e, 0xa9, 0x43, 0x17, 0xa1, 0x7d, 0x80, 0x4c, 0x68, 0xb9, 0xfe, 0xec, 0x93, 0x67,
0xeb, 0xe8, 0x14, 0x8e, 0x28, 0x71, 0x82, 0xd0, 0x19, 0x53, 0x6f, 0x26, 0x15, 0x7d, 0xdf, 0x09,
0x26, 0x76, 0x0b, 0x0d, 0xe1, 0x6d, 0x78, 0x1d, 0x52, 0xd7, 0x8f, 0x7c, 0x37, 0x0c, 0x9d, 0xa9,
0xfb, 0xf8, 0xb5, 0x39, 0xf1, 0xbe, 0x3a, 0xd4, 0x8d, 0xa6, 0x64, 0xb6, 0x98, 0xdb, 0x6d, 0xa9,
0xe6, 0xf9, 0xce, 0xd4, 0xb5, 0x0d, 0x59, 0xaa, 0x80, 0xdb, 0x1d, 0x74, 0x08, 0xa6, 0x14, 0x5b,
0x04, 0x1e, 0xbd, 0xb6, 0x4d, 0xf9, 0x04, 0x9e, 0xc9, 0x4d, 0x9d, 0xb9, 0x0d, 0xa8, 0x03, 0xba,
0x3b, 0xf1, 0xa8, 0x6d, 0x7d, 0x34, 0x1f, 0x9f, 0xe8, 0x4d, 0x5b, 0x59, 0xfc, 0xfe, 0x6f, 0x00,
0x00, 0x00, 0xff, 0xff, 0xae, 0x30, 0x05, 0xdc, 0x7f, 0x04, 0x00, 0x00,
// 661 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0xd1, 0x6e, 0xd3, 0x30,
0x14, 0x5d, 0xb6, 0xb4, 0x69, 0x6e, 0xba, 0x2a, 0x78, 0x63, 0x33, 0x08, 0x41, 0xa9, 0x90, 0xe8,
0x53, 0x1f, 0xc6, 0x90, 0xf6, 0x1a, 0xda, 0xa8, 0x0b, 0x23, 0x69, 0x71, 0x5c, 0x60, 0x4f, 0x91,
0x97, 0x9a, 0x36, 0xda, 0x92, 0x54, 0x8d, 0x2b, 0xd1, 0x4f, 0xe1, 0x47, 0xf8, 0x23, 0xfe, 0x03,
0xd9, 0x59, 0x96, 0x6e, 0x2f, 0x3c, 0xf5, 0xde, 0xeb, 0x73, 0x8e, 0x6f, 0x4f, 0x8e, 0x01, 0xc5,
0x4b, 0x26, 0xa2, 0x94, 0x17, 0x05, 0x5b, 0xf0, 0xc1, 0x6a, 0x9d, 0x8b, 0x1c, 0xb5, 0xd4, 0xcf,
0xcd, 0xe6, 0xe7, 0x4b, 0x8b, 0x67, 0x9b, 0xb4, 0x28, 0xc7, 0xbd, 0x0b, 0xe8, 0x84, 0x22, 0x89,
0x6f, 0xf9, 0xda, 0x2f, 0xe1, 0x08, 0x81, 0xbe, 0x64, 0xc5, 0x12, 0x6b, 0x5d, 0xad, 0x6f, 0x12,
0x55, 0xcb, 0xd9, 0x8a, 0xc5, 0xb7, 0x78, 0xbf, 0xab, 0xf5, 0x1b, 0x44, 0xd5, 0xbd, 0xaf, 0xd0,
0xf6, 0x52, 0xb6, 0xe0, 0x15, 0x0f, 0x83, 0xb1, 0x62, 0xdb, 0xbb, 0x9c, 0xcd, 0x15, 0xb5, 0x4d,
0xaa, 0x16, 0xbd, 0x07, 0x5d, 0x6c, 0x57, 0x5c, 0xb1, 0x3b, 0x67, 0x47, 0x83, 0x6a, 0x93, 0x81,
0xe2, 0xd3, 0xed, 0x8a, 0x13, 0x05, 0xe8, 0xfd, 0xd1, 0xa0, 0xed, 0x6c, 0xe6, 0x49, 0xfe, 0x7f,
0xcd, 0xf3, 0x47, 0x9a, 0xdd, 0x5a, 0x73, 0x97, 0x5f, 0x36, 0xf5, 0x05, 0xe8, 0x0d, 0x58, 0xf3,
0xcd, 0x9a, 0x89, 0x24, 0xcf, 0xa2, 0xb4, 0xc0, 0x07, 0x5d, 0xad, 0xaf, 0x13, 0xa8, 0x46, 0x7e,
0xd1, 0xfb, 0x08, 0xe6, 0x03, 0x07, 0x9d, 0x00, 0x9a, 0x05, 0x57, 0xc1, 0xe4, 0x7b, 0x10, 0x39,
0xb3, 0x91, 0x37, 0x89, 0xe8, 0xf5, 0xd4, 0xb5, 0xf7, 0x90, 0x01, 0x07, 0x8e, 0x33, 0xb4, 0x35,
0x55, 0xf8, 0xc4, 0xde, 0xef, 0xfd, 0x6e, 0x82, 0x35, 0x5c, 0x32, 0x51, 0xed, 0x7d, 0x0c, 0x8d,
0xf8, 0x2e, 0x8f, 0x6f, 0xd5, 0xd6, 0x3a, 0x29, 0x1b, 0xf4, 0x0a, 0x4c, 0x91, 0xa4, 0xbc, 0x10,
0x2c, 0x5d, 0xa9, 0xc5, 0x75, 0x52, 0x0f, 0xa4, 0xc7, 0x82, 0xff, 0x12, 0x6a, 0x29, 0x93, 0xa8,
0x5a, 0xee, 0xbb, 0xe6, 0xc5, 0x2a, 0xcf, 0x0a, 0x1e, 0x89, 0x1c, 0xeb, 0xea, 0x08, 0xaa, 0x11,
0xcd, 0xd1, 0x0b, 0x68, 0xf1, 0xac, 0x88, 0x32, 0x96, 0x72, 0xdc, 0x50, 0xa7, 0x06, 0xcf, 0x8a,
0x80, 0xa5, 0x1c, 0x9d, 0x82, 0xa1, 0x62, 0x90, 0xcc, 0x71, 0x53, 0x9d, 0x34, 0x65, 0xeb, 0xcd,
0xd1, 0x05, 0xb4, 0xef, 0xa3, 0x11, 0x29, 0x0b, 0x0d, 0x65, 0xe1, 0xf3, 0xda, 0xc2, 0xfb, 0x7f,
0xa1, 0x7c, 0xb3, 0xd2, 0xba, 0x41, 0x23, 0x68, 0xc7, 0x79, 0x26, 0x78, 0x26, 0x4a, 0x66, 0x4b,
0x31, 0xdf, 0xd6, 0xcc, 0x1d, 0x0f, 0x06, 0xc3, 0x12, 0x59, 0xaa, 0xc4, 0x75, 0x83, 0xce, 0xc1,
0x28, 0xca, 0xc8, 0x61, 0xb3, 0xab, 0xf5, 0xad, 0x33, 0x5c, 0x0b, 0x3c, 0xce, 0xe2, 0xe5, 0x1e,
0xa9, 0xa0, 0x68, 0x00, 0x8d, 0x44, 0xc6, 0x05, 0x83, 0xe2, 0x9c, 0x3c, 0x49, 0x51, 0xcd, 0x28,
0x61, 0x12, 0xcf, 0xe4, 0x97, 0xc4, 0xd6, 0x53, 0xfc, 0x6e, 0x42, 0x24, 0x5e, 0xc1, 0xd0, 0x6b,
0x30, 0xe3, 0x3c, 0x4d, 0x37, 0x59, 0x22, 0xb6, 0xb8, 0x2d, 0xc3, 0x76, 0xb9, 0x47, 0xea, 0x91,
0xfc, 0xa4, 0x8b, 0x35, 0xcb, 0x04, 0x3e, 0x54, 0x41, 0x2c, 0x1b, 0x34, 0x80, 0xa3, 0x7c, 0x9d,
0x2c, 0x92, 0x8c, 0xdd, 0x55, 0xef, 0x4d, 0x1a, 0xde, 0x51, 0x86, 0x3f, 0xab, 0x8e, 0xee, 0x2f,
0xf3, 0xe6, 0xbd, 0xbf, 0x1a, 0x58, 0x3b, 0xc6, 0x20, 0x0c, 0xc7, 0x55, 0xc4, 0x86, 0x93, 0x80,
0xba, 0x01, 0xad, 0x42, 0xd6, 0x01, 0xa0, 0xee, 0x0f, 0x1a, 0x4d, 0xbf, 0x38, 0x5e, 0x60, 0x6b,
0xc8, 0x02, 0x23, 0xa4, 0xde, 0xf0, 0xca, 0x25, 0xf6, 0x3e, 0x02, 0x68, 0x86, 0xd4, 0xa1, 0xb3,
0xd0, 0x3e, 0x40, 0x26, 0x34, 0x5c, 0x7f, 0xf2, 0xd9, 0xb3, 0x75, 0x74, 0x0a, 0x47, 0x94, 0x38,
0x41, 0xe8, 0x0c, 0xa9, 0x37, 0x91, 0x8a, 0xbe, 0xef, 0x04, 0x23, 0xbb, 0x81, 0xfa, 0xf0, 0x2e,
0xbc, 0x0e, 0xa9, 0xeb, 0x47, 0xbe, 0x1b, 0x86, 0xce, 0xd8, 0x7d, 0xb8, 0x6d, 0x4a, 0xbc, 0x6f,
0x0e, 0x75, 0xa3, 0x31, 0x99, 0xcc, 0xa6, 0x76, 0x53, 0xaa, 0x79, 0xbe, 0x33, 0x76, 0x6d, 0x43,
0x96, 0x2a, 0xf6, 0x76, 0x0b, 0x1d, 0x82, 0x29, 0xc5, 0x66, 0x81, 0x47, 0xaf, 0x6d, 0x53, 0x3e,
0x8c, 0x27, 0x72, 0x63, 0x67, 0x6a, 0x03, 0x6a, 0x81, 0xee, 0x8e, 0x3c, 0x6a, 0x5b, 0x9f, 0xcc,
0x87, 0x87, 0x7b, 0xd3, 0x54, 0xc6, 0x7f, 0xf8, 0x17, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x0e, 0x5a,
0x91, 0x95, 0x04, 0x00, 0x00,
}

View File

@ -58,9 +58,9 @@ message ChatMessage {
// Grant for community chat messages
bytes grant = 13;
// Replace indicates that this is a replacement of a message
// that has been updated
string replace = 14;
// original_message_id indicates that this is a edit of a message
// that has been updated
string original_message_id = 14;
enum ContentType {
UNKNOWN_CONTENT_TYPE = 0;

View File

@ -191,7 +191,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotification() {
inputMessage := buildTestMessage(*chat)
response, err := alice.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
messageIDString := response.Messages[0].ID
messageIDString := response.Messages()[0].ID
messageID, err := hex.DecodeString(messageIDString[2:])
s.Require().NoError(err)
@ -350,7 +350,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationFromContactO
inputMessage := buildTestMessage(*chat)
response, err := alice.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
messageIDString := response.Messages[0].ID
messageIDString := response.Messages()[0].ID
messageID, err := hex.DecodeString(messageIDString[2:])
s.Require().NoError(err)
@ -576,7 +576,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationRetries() {
inputMessage = buildTestMessage(*chat)
response, err := alice.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
messageIDString := response.Messages[0].ID
messageIDString := response.Messages()[0].ID
messageID, err := hex.DecodeString(messageIDString[2:])
s.Require().NoError(err)
@ -779,7 +779,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationMention() {
inputMessage.Text = "Hey @" + types.EncodeHex(crypto.FromECDSAPub(&bob.identity.PublicKey))
response, err := alice.SendChatMessage(context.Background(), inputMessage)
s.Require().NoError(err)
messageIDString := response.Messages[0].ID
messageIDString := response.Messages()[0].ID
messageID, err := hex.DecodeString(messageIDString[2:])
s.Require().NoError(err)