Move message to common namespace

This commit is contained in:
Andrea Maria Piana 2020-09-01 15:27:01 +02:00
parent 7d5d413222
commit 00c5b60d7f
No known key found for this signature in database
GPG Key ID: AA6CCA6DE0E06424
19 changed files with 311 additions and 274 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
v1protocol "github.com/status-im/status-go/protocol/v1" v1protocol "github.com/status-im/status-go/protocol/v1"
) )
@ -50,8 +51,8 @@ type Chat struct {
DeletedAtClockValue uint64 `json:"deletedAtClockValue"` DeletedAtClockValue uint64 `json:"deletedAtClockValue"`
// Denormalized fields // Denormalized fields
UnviewedMessagesCount uint `json:"unviewedMessagesCount"` UnviewedMessagesCount uint `json:"unviewedMessagesCount"`
LastMessage *Message `json:"lastMessage"` LastMessage *common.Message `json:"lastMessage"`
// Group chat fields // Group chat fields
// Members are the members who have been invited to the group chat // Members are the members who have been invited to the group chat
@ -172,7 +173,7 @@ func (c *Chat) NextClockAndTimestamp(timesource TimeSource) (uint64, uint64) {
return clock, timestamp return clock, timestamp
} }
func (c *Chat) UpdateFromMessage(message *Message, timesource TimeSource) error { func (c *Chat) UpdateFromMessage(message *common.Message, timesource TimeSource) error {
c.Timestamp = int64(timesource.GetCurrentTime()) c.Timestamp = int64(timesource.GetCurrentTime())
// If the clock of the last message is lower, we set the message // If the clock of the last message is lower, we set the message

View File

@ -5,6 +5,8 @@ import (
"testing" "testing"
"github.com/stretchr/testify/suite" "github.com/stretchr/testify/suite"
"github.com/status-im/status-go/protocol/common"
) )
type ChatTestSuite struct { type ChatTestSuite struct {
@ -75,7 +77,7 @@ func (s *ChatTestSuite) TestValidateChat() {
func (s *ChatTestSuite) TestUpdateFromMessage() { func (s *ChatTestSuite) TestUpdateFromMessage() {
// Base case, clock is higher // Base case, clock is higher
message := &Message{} message := &common.Message{}
chat := &Chat{} chat := &Chat{}
message.Clock = 1 message.Clock = 1
@ -84,7 +86,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() {
s.Require().Equal(uint64(1), chat.LastClockValue) s.Require().Equal(uint64(1), chat.LastClockValue)
// Clock is lower and lastMessage is not nil // Clock is lower and lastMessage is not nil
message = &Message{} message = &common.Message{}
lastMessage := message lastMessage := message
chat = &Chat{LastClockValue: 2, LastMessage: lastMessage} chat = &Chat{LastClockValue: 2, LastMessage: lastMessage}
@ -94,7 +96,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() {
s.Require().Equal(uint64(2), chat.LastClockValue) s.Require().Equal(uint64(2), chat.LastClockValue)
// Clock is lower and lastMessage is nil // Clock is lower and lastMessage is nil
message = &Message{} message = &common.Message{}
chat = &Chat{LastClockValue: 2} chat = &Chat{LastClockValue: 2}
message.Clock = 1 message.Clock = 1
@ -103,7 +105,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() {
s.Require().Equal(uint64(2), chat.LastClockValue) s.Require().Equal(uint64(2), chat.LastClockValue)
// Clock is higher but lastMessage has lower clock message then the receiving one // Clock is higher but lastMessage has lower clock message then the receiving one
message = &Message{} message = &common.Message{}
chat = &Chat{LastClockValue: 2} chat = &Chat{LastClockValue: 2}
message.Clock = 1 message.Clock = 1
@ -112,7 +114,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() {
s.Require().Equal(uint64(2), chat.LastClockValue) s.Require().Equal(uint64(2), chat.LastClockValue)
chat.LastClockValue = 4 chat.LastClockValue = 4
message = &Message{} message = &common.Message{}
message.Clock = 3 message.Clock = 3
s.Require().NoError(chat.UpdateFromMessage(message, &testTimeSource{})) s.Require().NoError(chat.UpdateFromMessage(message, &testTimeSource{}))
s.Require().Equal(chat.LastMessage, message) s.Require().Equal(chat.LastMessage, message)
@ -122,7 +124,7 @@ func (s *ChatTestSuite) TestUpdateFromMessage() {
func (s *ChatTestSuite) TestSerializeJSON() { func (s *ChatTestSuite) TestSerializeJSON() {
message := &Message{} message := &common.Message{}
chat := &Chat{} chat := &Chat{}
message.Clock = 1 message.Clock = 1

View File

@ -1,4 +1,4 @@
package protocol package common
import ( import (
"crypto/ecdsa" "crypto/ecdsa"
@ -11,6 +11,7 @@ import (
"unicode/utf8" "unicode/utf8"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/status-im/markdown" "github.com/status-im/markdown"
"github.com/status-im/markdown/ast" "github.com/status-im/markdown/ast"

View File

@ -1,4 +1,4 @@
package protocol package common
import ( import (
"io/ioutil" "io/ioutil"
@ -16,7 +16,7 @@ const expectedJPEG = "data:image/jpeg;base64,/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQ
const expectedAAC = "data:audio/aac;base64,//FQgBw//NoATGF2YzUyLjcwLjAAQniptokphEFCg5qs1v9fn48+qz1rfWNhwvz+CqB5dipmq3T2PlT1Ld6sPj+19fUt1C3NKV0KowiqohZVCrdf19WMatvV3YbIvAuy/q2RafA8UiZPmZY7DdmHZtP9ri25kedWSiMKQRt79ttlod55LkuX7/f7/f7/f7/YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYHNqo8g5qs1v9fn48+qz1rfWNhwvz+CqAAAAAAAAAAAAAAAAAAAAAAABw//FQgCNf/CFXbUZfDKFRgsYlKDegtXJH9eLkT54uRM1ckDYDcXRzZGF6Kz5Yps5fTeLY6w7gclwly+0PJL3udY3PyekTFI65bdniF3OjvHeafzZfWTs0qRMSkdll1sbb4SNT5e8vX98ytot6jEZ0NhJi2pBVP/tKV2JMyo36n9uxR2tKR+FoLCsP4SVi49kmvaSCWm5bQD96OmVQA9Q40bqnOa7rT8j9N0TlK991XdcenGTLbyS6eUnN2U1ckf14uRPni5EzVyQAAAAAAAAAAx6Q1flBp+KH2LhgH2Xx+14QB2/jcizm6ngck4vB9DoH9/Vcb7E8Dy+D/1ii1pSPwsUUUXCSsXHsk17SBfKwn2uHr6QAAAAAAAHA//FQgBt//CF3VO1KFCFWcd/r04m+O0758/tXHUlvaqEK9lvhUZXEZMXKMV/LQ6B3/mOl/Mrfs6jpD2b7f+n4yt+tm2x5ZmnpD++dZo/V9VgblI3OW/s1b8qt0h1RBiIRIIYIYQIBeCM8yy7etkwt1JAajRSoZGwwNZ07TTFTyMR1mTUVVUTW97vaDaHU5DV1snBf0mN4fraa+rf/vpdZ8FxqatGjNxPh35UuVfpNqc48W4nZ6rOO/16cTfHad8+f2rjqS3tVAAAAAAAAAAAAAAAAAAAAAAAAAAAO//FQgBm//CEXVPU+GiFsPr7x6+N6v+m+q511I4SgtYVyoyWjcMWMxkaxxDGSx1qVcarjDESt8zLQehx/lkil/GrHBy/NfJcHek0XtfanZJLHNXO2rUnFklPAlQSBS4l0pIoXIfORcXx0UYj1nTsSe1/0wXDkkFCfxWHtqRayOmWm3oS6JGdnZdtjesjByefiS8dLW1tVVVC58ijoxN3gmGFYj07+YJ6eth9fePXxvV/031XOupHCUAAAAAAAAAAAAAAAAAAAAAAAAAAA4P/xUIAcf/whN1T9NsMOEK5rxxxxXnid+f0/Ia195vi6oGH1ZVr6kjqScdSF9lt3qXH+Lxf0fo/Oe53r99IUPzybv/YWGZ7Vgk31MGw+DMp05+3y9fPERUTHlt1c9sUyoqCaD5bdXVz2wkG0hnpDmFy8r0fr3VBn/C7Rmg+L0/45EWfdocGq3HQ1uRro0GJK+vsvo837NR82s01l/n97rsWn7RYNBM3WRcDY3cJKosqMJhgdHtj9yflthd65rxxxxXnid+f0/Ia195vi6oAAAAAAAAAAAAAAAAAAAAAAAAAAAABw" const expectedAAC = "data:audio/aac;base64,//FQgBw//NoATGF2YzUyLjcwLjAAQniptokphEFCg5qs1v9fn48+qz1rfWNhwvz+CqB5dipmq3T2PlT1Ld6sPj+19fUt1C3NKV0KowiqohZVCrdf19WMatvV3YbIvAuy/q2RafA8UiZPmZY7DdmHZtP9ri25kedWSiMKQRt79ttlod55LkuX7/f7/f7/f7/YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYHNqo8g5qs1v9fn48+qz1rfWNhwvz+CqAAAAAAAAAAAAAAAAAAAAAAABw//FQgCNf/CFXbUZfDKFRgsYlKDegtXJH9eLkT54uRM1ckDYDcXRzZGF6Kz5Yps5fTeLY6w7gclwly+0PJL3udY3PyekTFI65bdniF3OjvHeafzZfWTs0qRMSkdll1sbb4SNT5e8vX98ytot6jEZ0NhJi2pBVP/tKV2JMyo36n9uxR2tKR+FoLCsP4SVi49kmvaSCWm5bQD96OmVQA9Q40bqnOa7rT8j9N0TlK991XdcenGTLbyS6eUnN2U1ckf14uRPni5EzVyQAAAAAAAAAAx6Q1flBp+KH2LhgH2Xx+14QB2/jcizm6ngck4vB9DoH9/Vcb7E8Dy+D/1ii1pSPwsUUUXCSsXHsk17SBfKwn2uHr6QAAAAAAAHA//FQgBt//CF3VO1KFCFWcd/r04m+O0758/tXHUlvaqEK9lvhUZXEZMXKMV/LQ6B3/mOl/Mrfs6jpD2b7f+n4yt+tm2x5ZmnpD++dZo/V9VgblI3OW/s1b8qt0h1RBiIRIIYIYQIBeCM8yy7etkwt1JAajRSoZGwwNZ07TTFTyMR1mTUVVUTW97vaDaHU5DV1snBf0mN4fraa+rf/vpdZ8FxqatGjNxPh35UuVfpNqc48W4nZ6rOO/16cTfHad8+f2rjqS3tVAAAAAAAAAAAAAAAAAAAAAAAAAAAO//FQgBm//CEXVPU+GiFsPr7x6+N6v+m+q511I4SgtYVyoyWjcMWMxkaxxDGSx1qVcarjDESt8zLQehx/lkil/GrHBy/NfJcHek0XtfanZJLHNXO2rUnFklPAlQSBS4l0pIoXIfORcXx0UYj1nTsSe1/0wXDkkFCfxWHtqRayOmWm3oS6JGdnZdtjesjByefiS8dLW1tVVVC58ijoxN3gmGFYj07+YJ6eth9fePXxvV/031XOupHCUAAAAAAAAAAAAAAAAAAAAAAAAAAA4P/xUIAcf/whN1T9NsMOEK5rxxxxXnid+f0/Ia195vi6oGH1ZVr6kjqScdSF9lt3qXH+Lxf0fo/Oe53r99IUPzybv/YWGZ7Vgk31MGw+DMp05+3y9fPERUTHlt1c9sUyoqCaD5bdXVz2wkG0hnpDmFy8r0fr3VBn/C7Rmg+L0/45EWfdocGq3HQ1uRro0GJK+vsvo837NR82s01l/n97rsWn7RYNBM3WRcDY3cJKosqMJhgdHtj9yflthd65rxxxxXnid+f0/Ia195vi6oAAAAAAAAAAAAAAAAAAAAAAAAAAAABw"
func TestPrepareContentImage(t *testing.T) { func TestPrepareContentImage(t *testing.T) {
file, err := os.Open("../_assets/tests/test.jpg") file, err := os.Open("../../_assets/tests/test.jpg")
require.NoError(t, err) require.NoError(t, err)
defer file.Close() defer file.Close()
@ -62,7 +62,7 @@ func TestGetImageMessageMIME(t *testing.T) {
} }
func TestPrepareContentAudio(t *testing.T) { func TestPrepareContentAudio(t *testing.T) {
file, err := os.Open("../_assets/tests/test.aac") file, err := os.Open("../../_assets/tests/test.aac")
require.NoError(t, err) require.NoError(t, err)
defer file.Close() defer file.Close()

View File

@ -6,6 +6,7 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
v1protocol "github.com/status-im/status-go/protocol/v1" v1protocol "github.com/status-im/status-go/protocol/v1"
) )
@ -27,7 +28,7 @@ func tsprintf(format string, params map[string]string) string {
return format return format
} }
func eventToSystemMessage(e v1protocol.MembershipUpdateEvent, translations map[protobuf.MembershipUpdateEvent_EventType]string) *Message { func eventToSystemMessage(e v1protocol.MembershipUpdateEvent, translations map[protobuf.MembershipUpdateEvent_EventType]string) *common.Message {
var text string var text string
switch e.Type { switch e.Type {
case protobuf.MembershipUpdateEvent_CHAT_CREATED: case protobuf.MembershipUpdateEvent_CHAT_CREATED:
@ -56,7 +57,7 @@ func eventToSystemMessage(e v1protocol.MembershipUpdateEvent, translations map[p
} }
timestamp := v1protocol.TimestampInMsFromTime(time.Now()) timestamp := v1protocol.TimestampInMsFromTime(time.Now())
message := &Message{ message := &common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: e.ChatID, ChatId: e.ChatID,
Text: text, Text: text,
@ -75,8 +76,8 @@ func eventToSystemMessage(e v1protocol.MembershipUpdateEvent, translations map[p
return message return message
} }
func buildSystemMessages(events []v1protocol.MembershipUpdateEvent, translations map[protobuf.MembershipUpdateEvent_EventType]string) []*Message { func buildSystemMessages(events []v1protocol.MembershipUpdateEvent, translations map[protobuf.MembershipUpdateEvent_EventType]string) []*common.Message {
var messages []*Message var messages []*common.Message
for _, e := range events { for _, e := range events {
messages = append(messages, eventToSystemMessage(e, translations)) messages = append(messages, eventToSystemMessage(e, translations))

View File

@ -5,11 +5,12 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/identity/alias" "github.com/status-im/status-go/protocol/identity/alias"
"github.com/status-im/status-go/protocol/identity/identicon" "github.com/status-im/status-go/protocol/identity/identicon"
) )
func extendMessageFromChat(message *Message, chat *Chat, key *ecdsa.PublicKey, timesource TimeSource) error { func extendMessageFromChat(message *common.Message, chat *Chat, key *ecdsa.PublicKey, timesource TimeSource) error {
clock, timestamp := chat.NextClockAndTimestamp(timesource) clock, timestamp := chat.NextClockAndTimestamp(timesource)
message.LocalChatID = chat.ID message.LocalChatID = chat.ID
@ -19,7 +20,7 @@ func extendMessageFromChat(message *Message, chat *Chat, key *ecdsa.PublicKey, t
message.SigPubKey = key message.SigPubKey = key
message.WhisperTimestamp = timestamp message.WhisperTimestamp = timestamp
message.Seen = true message.Seen = true
message.OutgoingStatus = OutgoingStatusSending message.OutgoingStatus = common.OutgoingStatusSending
identicon, err := identicon.GenerateBase64(message.From) identicon, err := identicon.GenerateBase64(message.From)
if err != nil { if err != nil {

View File

@ -145,7 +145,7 @@ func (m *MessageHandler) HandleMembershipUpdate(messageState *ReceivedMessageSta
return nil return nil
} }
func (m *MessageHandler) handleCommandMessage(state *ReceivedMessageState, message *Message) error { func (m *MessageHandler) handleCommandMessage(state *ReceivedMessageState, message *common.Message) error {
message.ID = state.CurrentMessageState.MessageID message.ID = state.CurrentMessageState.MessageID
message.From = state.CurrentMessageState.Contact.ID message.From = state.CurrentMessageState.Contact.ID
message.Alias = state.CurrentMessageState.Contact.Alias message.Alias = state.CurrentMessageState.Contact.Alias
@ -182,7 +182,7 @@ func (m *MessageHandler) handleCommandMessage(state *ReceivedMessageState, messa
message.OutgoingStatus = "" message.OutgoingStatus = ""
} else { } else {
// Our own message, mark as sent // Our own message, mark as sent
message.OutgoingStatus = OutgoingStatusSent message.OutgoingStatus = common.OutgoingStatusSent
} }
err = chat.UpdateFromMessage(message, state.Timesource) err = chat.UpdateFromMessage(message, state.Timesource)
@ -330,7 +330,7 @@ func (m *MessageHandler) HandleChatMessage(state *ReceivedMessageState) error {
logger.Warn("failed to validate message", zap.Error(err)) logger.Warn("failed to validate message", zap.Error(err))
return err return err
} }
receivedMessage := &Message{ receivedMessage := &common.Message{
ID: state.CurrentMessageState.MessageID, ID: state.CurrentMessageState.MessageID,
ChatMessage: state.CurrentMessageState.Message, ChatMessage: state.CurrentMessageState.Message,
From: state.CurrentMessageState.Contact.ID, From: state.CurrentMessageState.Contact.ID,
@ -369,7 +369,7 @@ func (m *MessageHandler) HandleChatMessage(state *ReceivedMessageState) error {
chat.UnviewedMessagesCount++ chat.UnviewedMessagesCount++
} else { } else {
// Our own message, mark as sent // Our own message, mark as sent
receivedMessage.OutgoingStatus = OutgoingStatusSent receivedMessage.OutgoingStatus = common.OutgoingStatusSent
} }
err = chat.UpdateFromMessage(receivedMessage, state.Timesource) err = chat.UpdateFromMessage(receivedMessage, state.Timesource)
@ -401,7 +401,7 @@ func (m *MessageHandler) HandleRequestAddressForTransaction(messageState *Receiv
if err != nil { if err != nil {
return err return err
} }
message := &Message{ message := &common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
Clock: command.Clock, Clock: command.Clock,
Timestamp: messageState.CurrentMessageState.WhisperTimestamp, Timestamp: messageState.CurrentMessageState.WhisperTimestamp,
@ -410,11 +410,11 @@ func (m *MessageHandler) HandleRequestAddressForTransaction(messageState *Receiv
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
ContentType: protobuf.ChatMessage_TRANSACTION_COMMAND, ContentType: protobuf.ChatMessage_TRANSACTION_COMMAND,
}, },
CommandParameters: &CommandParameters{ CommandParameters: &common.CommandParameters{
ID: messageState.CurrentMessageState.MessageID, ID: messageState.CurrentMessageState.MessageID,
Value: command.Value, Value: command.Value,
Contract: command.Contract, Contract: command.Contract,
CommandState: CommandStateRequestAddressForTransaction, CommandState: common.CommandStateRequestAddressForTransaction,
}, },
} }
return m.handleCommandMessage(messageState, message) return m.handleCommandMessage(messageState, message)
@ -425,7 +425,7 @@ func (m *MessageHandler) HandleRequestTransaction(messageState *ReceivedMessageS
if err != nil { if err != nil {
return err return err
} }
message := &Message{ message := &common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
Clock: command.Clock, Clock: command.Clock,
Timestamp: messageState.CurrentMessageState.WhisperTimestamp, Timestamp: messageState.CurrentMessageState.WhisperTimestamp,
@ -434,11 +434,11 @@ func (m *MessageHandler) HandleRequestTransaction(messageState *ReceivedMessageS
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
ContentType: protobuf.ChatMessage_TRANSACTION_COMMAND, ContentType: protobuf.ChatMessage_TRANSACTION_COMMAND,
}, },
CommandParameters: &CommandParameters{ CommandParameters: &common.CommandParameters{
ID: messageState.CurrentMessageState.MessageID, ID: messageState.CurrentMessageState.MessageID,
Value: command.Value, Value: command.Value,
Contract: command.Contract, Contract: command.Contract,
CommandState: CommandStateRequestTransaction, CommandState: common.CommandStateRequestTransaction,
Address: command.Address, Address: command.Address,
}, },
} }
@ -466,7 +466,7 @@ func (m *MessageHandler) HandleAcceptRequestAddressForTransaction(messageState *
return errors.New("Initial message must originate from us") return errors.New("Initial message must originate from us")
} }
if initialMessage.CommandParameters.CommandState != CommandStateRequestAddressForTransaction { if initialMessage.CommandParameters.CommandState != common.CommandStateRequestAddressForTransaction {
return errors.New("Wrong state for command") return errors.New("Wrong state for command")
} }
@ -475,7 +475,7 @@ func (m *MessageHandler) HandleAcceptRequestAddressForTransaction(messageState *
initialMessage.Text = requestAddressForTransactionAcceptedMessage initialMessage.Text = requestAddressForTransactionAcceptedMessage
initialMessage.CommandParameters.Address = command.Address initialMessage.CommandParameters.Address = command.Address
initialMessage.Seen = false initialMessage.Seen = false
initialMessage.CommandParameters.CommandState = CommandStateRequestAddressForTransactionAccepted initialMessage.CommandParameters.CommandState = common.CommandStateRequestAddressForTransactionAccepted
// Hide previous message // Hide previous message
previousMessage, err := m.persistence.MessageByCommandID(messageState.CurrentMessageState.Contact.ID, command.Id) previousMessage, err := m.persistence.MessageByCommandID(messageState.CurrentMessageState.Contact.ID, command.Id)
@ -536,7 +536,7 @@ func (m *MessageHandler) HandleDeclineRequestAddressForTransaction(messageState
return errors.New("Initial message must originate from us") return errors.New("Initial message must originate from us")
} }
if oldMessage.CommandParameters.CommandState != CommandStateRequestAddressForTransaction { if oldMessage.CommandParameters.CommandState != common.CommandStateRequestAddressForTransaction {
return errors.New("Wrong state for command") return errors.New("Wrong state for command")
} }
@ -544,7 +544,7 @@ func (m *MessageHandler) HandleDeclineRequestAddressForTransaction(messageState
oldMessage.Timestamp = messageState.CurrentMessageState.WhisperTimestamp oldMessage.Timestamp = messageState.CurrentMessageState.WhisperTimestamp
oldMessage.Text = requestAddressForTransactionDeclinedMessage oldMessage.Text = requestAddressForTransactionDeclinedMessage
oldMessage.Seen = false oldMessage.Seen = false
oldMessage.CommandParameters.CommandState = CommandStateRequestAddressForTransactionDeclined oldMessage.CommandParameters.CommandState = common.CommandStateRequestAddressForTransactionDeclined
// Hide previous message // Hide previous message
err = m.persistence.HideMessage(command.Id) err = m.persistence.HideMessage(command.Id)
@ -577,7 +577,7 @@ func (m *MessageHandler) HandleDeclineRequestTransaction(messageState *ReceivedM
return errors.New("Initial message must originate from us") return errors.New("Initial message must originate from us")
} }
if oldMessage.CommandParameters.CommandState != CommandStateRequestTransaction { if oldMessage.CommandParameters.CommandState != common.CommandStateRequestTransaction {
return errors.New("Wrong state for command") return errors.New("Wrong state for command")
} }
@ -585,7 +585,7 @@ func (m *MessageHandler) HandleDeclineRequestTransaction(messageState *ReceivedM
oldMessage.Timestamp = messageState.CurrentMessageState.WhisperTimestamp oldMessage.Timestamp = messageState.CurrentMessageState.WhisperTimestamp
oldMessage.Text = transactionRequestDeclinedMessage oldMessage.Text = transactionRequestDeclinedMessage
oldMessage.Seen = false oldMessage.Seen = false
oldMessage.CommandParameters.CommandState = CommandStateRequestTransactionDeclined oldMessage.CommandParameters.CommandState = common.CommandStateRequestTransactionDeclined
// Hide previous message // Hide previous message
err = m.persistence.HideMessage(command.Id) err = m.persistence.HideMessage(command.Id)

View File

@ -7,6 +7,7 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -106,7 +107,7 @@ type scanner interface {
Scan(dest ...interface{}) error Scan(dest ...interface{}) error
} }
func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message *Message, others ...interface{}) error { func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message *common.Message, others ...interface{}) error {
var quotedText sql.NullString var quotedText sql.NullString
var quotedParsedText []byte var quotedParsedText []byte
var quotedFrom sql.NullString var quotedFrom sql.NullString
@ -118,7 +119,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
var identicon sql.NullString var identicon sql.NullString
sticker := &protobuf.StickerMessage{} sticker := &protobuf.StickerMessage{}
command := &CommandParameters{} command := &common.CommandParameters{}
audio := &protobuf.AudioMessage{} audio := &protobuf.AudioMessage{}
args := []interface{}{ args := []interface{}{
@ -169,7 +170,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
} }
if quotedText.Valid { if quotedText.Valid {
message.QuotedMessage = &QuotedMessage{ message.QuotedMessage = &common.QuotedMessage{
From: quotedFrom.String, From: quotedFrom.String,
Text: quotedText.String, Text: quotedText.String,
ParsedText: quotedParsedText, ParsedText: quotedParsedText,
@ -202,7 +203,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
return nil return nil
} }
func (db sqlitePersistence) tableUserMessagesAllValues(message *Message) ([]interface{}, error) { func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message) ([]interface{}, error) {
sticker := message.GetSticker() sticker := message.GetSticker()
if sticker == nil { if sticker == nil {
sticker = &protobuf.StickerMessage{} sticker = &protobuf.StickerMessage{}
@ -220,7 +221,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *Message) ([]inte
command := message.CommandParameters command := message.CommandParameters
if command == nil { if command == nil {
command = &CommandParameters{} command = &common.CommandParameters{}
} }
var serializedMentions []byte var serializedMentions []byte
@ -271,7 +272,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *Message) ([]inte
}, nil }, nil
} }
func (db sqlitePersistence) messageByID(tx *sql.Tx, id string) (*Message, error) { func (db sqlitePersistence) messageByID(tx *sql.Tx, id string) (*common.Message, error) {
var err error var err error
if tx == nil { if tx == nil {
tx, err = db.db.BeginTx(context.Background(), &sql.TxOptions{}) tx, err = db.db.BeginTx(context.Background(), &sql.TxOptions{})
@ -288,7 +289,7 @@ func (db sqlitePersistence) messageByID(tx *sql.Tx, id string) (*Message, error)
}() }()
} }
var message Message var message common.Message
allFields := db.tableUserMessagesAllFieldsJoin() allFields := db.tableUserMessagesAllFieldsJoin()
row := tx.QueryRow( row := tx.QueryRow(
@ -322,9 +323,9 @@ func (db sqlitePersistence) messageByID(tx *sql.Tx, id string) (*Message, error)
} }
} }
func (db sqlitePersistence) MessageByCommandID(chatID, id string) (*Message, error) { func (db sqlitePersistence) MessageByCommandID(chatID, id string) (*common.Message, error) {
var message Message var message common.Message
allFields := db.tableUserMessagesAllFieldsJoin() allFields := db.tableUserMessagesAllFieldsJoin()
row := db.db.QueryRow( row := db.db.QueryRow(
@ -363,7 +364,7 @@ func (db sqlitePersistence) MessageByCommandID(chatID, id string) (*Message, err
} }
} }
func (db sqlitePersistence) MessageByID(id string) (*Message, error) { func (db sqlitePersistence) MessageByID(id string) (*common.Message, error) {
return db.messageByID(nil, id) return db.messageByID(nil, id)
} }
@ -398,7 +399,7 @@ func (db sqlitePersistence) MessagesExist(ids []string) (map[string]bool, error)
return result, nil return result, nil
} }
func (db sqlitePersistence) MessagesByIDs(ids []string) ([]*Message, error) { func (db sqlitePersistence) MessagesByIDs(ids []string) ([]*common.Message, error) {
if len(ids) == 0 { if len(ids) == 0 {
return nil, nil return nil, nil
} }
@ -433,9 +434,9 @@ func (db sqlitePersistence) MessagesByIDs(ids []string) ([]*Message, error) {
} }
defer rows.Close() defer rows.Close()
var result []*Message var result []*common.Message
for rows.Next() { for rows.Next() {
var message Message var message common.Message
if err := db.tableUserMessagesScanAllFields(rows, &message); err != nil { if err := db.tableUserMessagesScanAllFields(rows, &message); err != nil {
return nil, err return nil, err
} }
@ -448,7 +449,7 @@ func (db sqlitePersistence) MessagesByIDs(ids []string) ([]*Message, error) {
// MessageByChatID returns all messages for a given chatID in descending order. // MessageByChatID returns all messages for a given chatID in descending order.
// Ordering is accomplished using two concatenated values: ClockValue and ID. // Ordering is accomplished using two concatenated values: ClockValue and ID.
// These two values are also used to compose a cursor which is returned to the result. // These two values are also used to compose a cursor which is returned to the result.
func (db sqlitePersistence) MessageByChatID(chatID string, currCursor string, limit int) ([]*Message, string, error) { func (db sqlitePersistence) MessageByChatID(chatID string, currCursor string, limit int) ([]*common.Message, string, error) {
cursorWhere := "" cursorWhere := ""
if currCursor != "" { if currCursor != "" {
cursorWhere = "AND cursor <= ?" cursorWhere = "AND cursor <= ?"
@ -491,12 +492,12 @@ func (db sqlitePersistence) MessageByChatID(chatID string, currCursor string, li
defer rows.Close() defer rows.Close()
var ( var (
result []*Message result []*common.Message
cursors []string cursors []string
) )
for rows.Next() { for rows.Next() {
var ( var (
message Message message common.Message
cursor string cursor string
) )
if err := db.tableUserMessagesScanAllFields(rows, &message, &cursor); err != nil { if err := db.tableUserMessagesScanAllFields(rows, &message, &cursor); err != nil {
@ -587,7 +588,7 @@ func (db sqlitePersistence) EmojiReactionsByChatID(chatID string, currCursor str
return result, nil return result, nil
} }
func (db sqlitePersistence) SaveMessages(messages []*Message) (err error) { func (db sqlitePersistence) SaveMessages(messages []*common.Message) (err error) {
tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{})
if err != nil { if err != nil {
return return

View File

@ -91,7 +91,7 @@ type RawResponse struct {
type MessengerResponse struct { type MessengerResponse struct {
Chats []*Chat `json:"chats,omitempty"` Chats []*Chat `json:"chats,omitempty"`
Messages []*Message `json:"messages,omitempty"` Messages []*common.Message `json:"messages,omitempty"`
Contacts []*Contact `json:"contacts,omitempty"` Contacts []*Contact `json:"contacts,omitempty"`
Installations []*multidevice.Installation `json:"installations,omitempty"` Installations []*multidevice.Installation `json:"installations,omitempty"`
EmojiReactions []*EmojiReaction `json:"emojiReactions,omitempty"` EmojiReactions []*EmojiReaction `json:"emojiReactions,omitempty"`
@ -1689,7 +1689,7 @@ func (m *Messenger) dispatchMessage(ctx context.Context, spec common.RawMessage)
} }
// SendChatMessage takes a minimal message and sends it based on the corresponding chat // SendChatMessage takes a minimal message and sends it based on the corresponding chat
func (m *Messenger) SendChatMessage(ctx context.Context, message *Message) (*MessengerResponse, error) { func (m *Messenger) SendChatMessage(ctx context.Context, message *common.Message) (*MessengerResponse, error) {
m.mutex.Lock() m.mutex.Lock()
defer m.mutex.Unlock() defer m.mutex.Unlock()
@ -1778,12 +1778,12 @@ func (m *Messenger) SendChatMessage(ctx context.Context, message *Message) (*Mes
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Messages, err = m.pullMessagesAndResponsesFromDB([]*Message{message}) response.Messages, err = m.pullMessagesAndResponsesFromDB([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -2540,7 +2540,7 @@ func (m *Messenger) ConfirmMessagesProcessed(messageIDs [][]byte) error {
return nil return nil
} }
func (m *Messenger) MessageByID(id string) (*Message, error) { func (m *Messenger) MessageByID(id string) (*common.Message, error) {
return m.persistence.MessageByID(id) return m.persistence.MessageByID(id)
} }
@ -2548,11 +2548,11 @@ func (m *Messenger) MessagesExist(ids []string) (map[string]bool, error) {
return m.persistence.MessagesExist(ids) return m.persistence.MessagesExist(ids)
} }
func (m *Messenger) MessageByChatID(chatID, cursor string, limit int) ([]*Message, string, error) { func (m *Messenger) MessageByChatID(chatID, cursor string, limit int) ([]*common.Message, string, error) {
return m.persistence.MessageByChatID(chatID, cursor, limit) return m.persistence.MessageByChatID(chatID, cursor, limit)
} }
func (m *Messenger) SaveMessages(messages []*Message) error { func (m *Messenger) SaveMessages(messages []*common.Message) error {
return m.persistence.SaveMessages(messages) return m.persistence.SaveMessages(messages)
} }
@ -2733,7 +2733,7 @@ func (m *Messenger) RequestTransaction(ctx context.Context, chatID, value, contr
return nil, errors.New("Need to be a one-to-one chat") return nil, errors.New("Need to be a one-to-one chat")
} }
message := &Message{} message := &common.Message{}
err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport)
if err != nil { if err != nil {
return nil, err return nil, err
@ -2760,12 +2760,12 @@ func (m *Messenger) RequestTransaction(ctx context.Context, chatID, value, contr
ResendAutomatically: true, ResendAutomatically: true,
}) })
message.CommandParameters = &CommandParameters{ message.CommandParameters = &common.CommandParameters{
ID: types.EncodeHex(id), ID: types.EncodeHex(id),
Value: value, Value: value,
Address: address, Address: address,
Contract: contract, Contract: contract,
CommandState: CommandStateRequestTransaction, CommandState: common.CommandStateRequestTransaction,
} }
if err != nil { if err != nil {
@ -2785,13 +2785,13 @@ func (m *Messenger) RequestTransaction(ctx context.Context, chatID, value, contr
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -2810,7 +2810,7 @@ func (m *Messenger) RequestAddressForTransaction(ctx context.Context, chatID, fr
return nil, errors.New("Need to be a one-to-one chat") return nil, errors.New("Need to be a one-to-one chat")
} }
message := &Message{} message := &common.Message{}
err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport)
if err != nil { if err != nil {
return nil, err return nil, err
@ -2836,12 +2836,12 @@ func (m *Messenger) RequestAddressForTransaction(ctx context.Context, chatID, fr
ResendAutomatically: true, ResendAutomatically: true,
}) })
message.CommandParameters = &CommandParameters{ message.CommandParameters = &common.CommandParameters{
ID: types.EncodeHex(id), ID: types.EncodeHex(id),
From: from, From: from,
Value: value, Value: value,
Contract: contract, Contract: contract,
CommandState: CommandStateRequestAddressForTransaction, CommandState: common.CommandStateRequestAddressForTransaction,
} }
if err != nil { if err != nil {
@ -2861,13 +2861,13 @@ func (m *Messenger) RequestAddressForTransaction(ctx context.Context, chatID, fr
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -2902,7 +2902,7 @@ func (m *Messenger) AcceptRequestAddressForTransaction(ctx context.Context, mess
message.WhisperTimestamp = timestamp message.WhisperTimestamp = timestamp
message.Timestamp = timestamp message.Timestamp = timestamp
message.Text = "Request address for transaction accepted" message.Text = "Request address for transaction accepted"
message.OutgoingStatus = OutgoingStatusSending message.OutgoingStatus = common.OutgoingStatusSending
// Hide previous message // Hide previous message
previousMessage, err := m.persistence.MessageByCommandID(chatID, messageID) previousMessage, err := m.persistence.MessageByCommandID(chatID, messageID)
@ -2944,7 +2944,7 @@ func (m *Messenger) AcceptRequestAddressForTransaction(ctx context.Context, mess
message.ID = types.EncodeHex(newMessageID) message.ID = types.EncodeHex(newMessageID)
message.CommandParameters.Address = address message.CommandParameters.Address = address
message.CommandParameters.CommandState = CommandStateRequestAddressForTransactionAccepted message.CommandParameters.CommandState = common.CommandStateRequestAddressForTransactionAccepted
err = message.PrepareContent() err = message.PrepareContent()
if err != nil { if err != nil {
@ -2956,13 +2956,13 @@ func (m *Messenger) AcceptRequestAddressForTransaction(ctx context.Context, mess
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -2997,7 +2997,7 @@ func (m *Messenger) DeclineRequestTransaction(ctx context.Context, messageID str
message.WhisperTimestamp = timestamp message.WhisperTimestamp = timestamp
message.Timestamp = timestamp message.Timestamp = timestamp
message.Text = "Transaction request declined" message.Text = "Transaction request declined"
message.OutgoingStatus = OutgoingStatusSending message.OutgoingStatus = common.OutgoingStatusSending
message.Replace = messageID message.Replace = messageID
err = m.persistence.HideMessage(messageID) err = m.persistence.HideMessage(messageID)
@ -3026,7 +3026,7 @@ func (m *Messenger) DeclineRequestTransaction(ctx context.Context, messageID str
} }
message.ID = types.EncodeHex(newMessageID) message.ID = types.EncodeHex(newMessageID)
message.CommandParameters.CommandState = CommandStateRequestTransactionDeclined message.CommandParameters.CommandState = common.CommandStateRequestTransactionDeclined
err = message.PrepareContent() err = message.PrepareContent()
if err != nil { if err != nil {
@ -3038,13 +3038,13 @@ func (m *Messenger) DeclineRequestTransaction(ctx context.Context, messageID str
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -3079,7 +3079,7 @@ func (m *Messenger) DeclineRequestAddressForTransaction(ctx context.Context, mes
message.WhisperTimestamp = timestamp message.WhisperTimestamp = timestamp
message.Timestamp = timestamp message.Timestamp = timestamp
message.Text = "Request address for transaction declined" message.Text = "Request address for transaction declined"
message.OutgoingStatus = OutgoingStatusSending message.OutgoingStatus = common.OutgoingStatusSending
message.Replace = messageID message.Replace = messageID
err = m.persistence.HideMessage(messageID) err = m.persistence.HideMessage(messageID)
@ -3108,7 +3108,7 @@ func (m *Messenger) DeclineRequestAddressForTransaction(ctx context.Context, mes
} }
message.ID = types.EncodeHex(newMessageID) message.ID = types.EncodeHex(newMessageID)
message.CommandParameters.CommandState = CommandStateRequestAddressForTransactionDeclined message.CommandParameters.CommandState = common.CommandStateRequestAddressForTransactionDeclined
err = message.PrepareContent() err = message.PrepareContent()
if err != nil { if err != nil {
@ -3120,13 +3120,13 @@ func (m *Messenger) DeclineRequestAddressForTransaction(ctx context.Context, mes
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -3161,7 +3161,7 @@ func (m *Messenger) AcceptRequestTransaction(ctx context.Context, transactionHas
message.WhisperTimestamp = timestamp message.WhisperTimestamp = timestamp
message.Timestamp = timestamp message.Timestamp = timestamp
message.Text = transactionSentTxt message.Text = transactionSentTxt
message.OutgoingStatus = OutgoingStatusSending message.OutgoingStatus = common.OutgoingStatusSending
// Hide previous message // Hide previous message
previousMessage, err := m.persistence.MessageByCommandID(chatID, messageID) previousMessage, err := m.persistence.MessageByCommandID(chatID, messageID)
@ -3207,7 +3207,7 @@ func (m *Messenger) AcceptRequestTransaction(ctx context.Context, transactionHas
message.ID = types.EncodeHex(newMessageID) message.ID = types.EncodeHex(newMessageID)
message.CommandParameters.TransactionHash = transactionHash message.CommandParameters.TransactionHash = transactionHash
message.CommandParameters.Signature = signature message.CommandParameters.Signature = signature
message.CommandParameters.CommandState = CommandStateTransactionSent message.CommandParameters.CommandState = common.CommandStateTransactionSent
err = message.PrepareContent() err = message.PrepareContent()
if err != nil { if err != nil {
@ -3219,13 +3219,13 @@ func (m *Messenger) AcceptRequestTransaction(ctx context.Context, transactionHas
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -3244,7 +3244,7 @@ func (m *Messenger) SendTransaction(ctx context.Context, chatID, value, contract
return nil, errors.New("Need to be a one-to-one chat") return nil, errors.New("Need to be a one-to-one chat")
} }
message := &Message{} message := &common.Message{}
err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport)
if err != nil { if err != nil {
return nil, err return nil, err
@ -3282,12 +3282,12 @@ func (m *Messenger) SendTransaction(ctx context.Context, chatID, value, contract
} }
message.ID = types.EncodeHex(newMessageID) message.ID = types.EncodeHex(newMessageID)
message.CommandParameters = &CommandParameters{ message.CommandParameters = &common.CommandParameters{
TransactionHash: transactionHash, TransactionHash: transactionHash,
Value: value, Value: value,
Contract: contract, Contract: contract,
Signature: signature, Signature: signature,
CommandState: CommandStateTransactionSent, CommandState: common.CommandStateTransactionSent,
} }
err = message.PrepareContent() err = message.PrepareContent()
@ -3300,13 +3300,13 @@ func (m *Messenger) SendTransaction(ctx context.Context, chatID, value, contract
return nil, err return nil, err
} }
err = m.persistence.SaveMessages([]*Message{message}) err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.Chats = []*Chat{chat} response.Chats = []*Chat{chat}
response.Messages = []*Message{message} response.Messages = []*common.Message{message}
return &response, m.saveChat(chat) return &response, m.saveChat(chat)
} }
@ -3335,7 +3335,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
return nil, err return nil, err
} }
for _, validationResult := range responses { for _, validationResult := range responses {
var message *Message var message *common.Message
chatID := contactIDFromPublicKey(validationResult.Transaction.From) chatID := contactIDFromPublicKey(validationResult.Transaction.From)
chat, ok := m.allChats[chatID] chat, ok := m.allChats[chatID]
if !ok { if !ok {
@ -3344,7 +3344,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
if validationResult.Message != nil { if validationResult.Message != nil {
message = validationResult.Message message = validationResult.Message
} else { } else {
message = &Message{} message = &common.Message{}
err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport) err := extendMessageFromChat(message, chat, &m.identity.PublicKey, m.transport)
if err != nil { if err != nil {
return nil, err return nil, err
@ -3365,7 +3365,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
message.ID = validationResult.Transaction.MessageID message.ID = validationResult.Transaction.MessageID
if message.CommandParameters == nil { if message.CommandParameters == nil {
message.CommandParameters = &CommandParameters{} message.CommandParameters = &common.CommandParameters{}
} else { } else {
message.CommandParameters = validationResult.Message.CommandParameters message.CommandParameters = validationResult.Message.CommandParameters
} }
@ -3373,7 +3373,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
message.CommandParameters.Value = validationResult.Value message.CommandParameters.Value = validationResult.Value
message.CommandParameters.Contract = validationResult.Contract message.CommandParameters.Contract = validationResult.Contract
message.CommandParameters.Address = validationResult.Address message.CommandParameters.Address = validationResult.Address
message.CommandParameters.CommandState = CommandStateTransactionSent message.CommandParameters.CommandState = common.CommandStateTransactionSent
message.CommandParameters.TransactionHash = validationResult.Transaction.TransactionHash message.CommandParameters.TransactionHash = validationResult.Transaction.TransactionHash
err = message.PrepareContent() err = message.PrepareContent()
@ -3422,7 +3422,7 @@ func (m *Messenger) ValidateTransactions(ctx context.Context, addresses []types.
// pullMessagesAndResponsesFromDB pulls all the messages and the one that have // pullMessagesAndResponsesFromDB pulls all the messages and the one that have
// been replied to from the database // been replied to from the database
func (m *Messenger) pullMessagesAndResponsesFromDB(messages []*Message) ([]*Message, error) { func (m *Messenger) pullMessagesAndResponsesFromDB(messages []*common.Message) ([]*common.Message, error) {
var messageIDs []string var messageIDs []string
for _, message := range messages { for _, message := range messages {
messageIDs = append(messageIDs, message.ID) messageIDs = append(messageIDs, message.ID)

View File

@ -24,6 +24,7 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
enstypes "github.com/status-im/status-go/eth-node/types/ens" enstypes "github.com/status-im/status-go/eth-node/types/ens"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/protocol/tt"
v1protocol "github.com/status-im/status-go/protocol/v1" v1protocol "github.com/status-im/status-go/protocol/v1"
@ -288,9 +289,9 @@ func (s *MessengerSuite) TestInit() {
} }
} }
func buildTestMessage(chat Chat) *Message { func buildTestMessage(chat Chat) *common.Message {
clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{}) clock, timestamp := chat.NextClockAndTimestamp(&testTimeSource{})
message := &Message{} message := &common.Message{}
message.Text = "text-input-message" message.Text = "text-input-message"
message.ChatId = chat.ID message.ChatId = chat.ID
message.Clock = clock message.Clock = clock
@ -322,7 +323,7 @@ func (s *MessengerSuite) TestMarkMessagesSeen() {
inputMessage2.ID = "2" inputMessage2.ID = "2"
inputMessage2.Seen = false inputMessage2.Seen = false
err = s.m.SaveMessages([]*Message{inputMessage1, inputMessage2}) err = s.m.SaveMessages([]*common.Message{inputMessage1, inputMessage2})
s.Require().NoError(err) s.Require().NoError(err)
count, err := s.m.MarkMessagesSeen(chat.ID, []string{inputMessage1.ID}) count, err := s.m.MarkMessagesSeen(chat.ID, []string{inputMessage1.ID})
@ -346,7 +347,7 @@ func (s *MessengerSuite) TestMarkAllRead() {
inputMessage2.ID = "2" inputMessage2.ID = "2"
inputMessage2.Seen = false inputMessage2.Seen = false
err = s.m.SaveMessages([]*Message{inputMessage1, inputMessage2}) err = s.m.SaveMessages([]*common.Message{inputMessage1, inputMessage2})
s.Require().NoError(err) s.Require().NoError(err)
err = s.m.MarkAllRead(chat.ID) err = s.m.MarkAllRead(chat.ID)
@ -374,7 +375,7 @@ func (s *MessengerSuite) TestSendPublic() {
s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp") s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp")
s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field") s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field")
s.Require().True(outputMessage.Seen, "it marks the message as seen") s.Require().True(outputMessage.Seen, "it marks the message as seen")
s.Require().Equal(outputMessage.OutgoingStatus, OutgoingStatusSending, "it marks the message as sending") s.Require().Equal(outputMessage.OutgoingStatus, common.OutgoingStatusSending, "it marks the message as sending")
s.Require().NotEmpty(outputMessage.ID, "it sets the ID field") s.Require().NotEmpty(outputMessage.ID, "it sets the ID field")
s.Require().Equal(protobuf.MessageType_PUBLIC_GROUP, outputMessage.MessageType) s.Require().Equal(protobuf.MessageType_PUBLIC_GROUP, outputMessage.MessageType)
@ -389,7 +390,7 @@ func (s *MessengerSuite) TestSendPrivateOneToOne() {
pkString := hex.EncodeToString(crypto.FromECDSAPub(&recipientKey.PublicKey)) pkString := hex.EncodeToString(crypto.FromECDSAPub(&recipientKey.PublicKey))
chat := CreateOneToOneChat(pkString, &recipientKey.PublicKey, s.m.transport) chat := CreateOneToOneChat(pkString, &recipientKey.PublicKey, s.m.transport)
inputMessage := &Message{} inputMessage := &common.Message{}
inputMessage.ChatId = chat.ID inputMessage.ChatId = chat.ID
chat.LastClockValue = uint64(100000000000000) chat.LastClockValue = uint64(100000000000000)
err = s.m.SaveChat(&chat) err = s.m.SaveChat(&chat)
@ -405,7 +406,7 @@ func (s *MessengerSuite) TestSendPrivateOneToOne() {
s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp") s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp")
s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field") s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field")
s.Require().True(outputMessage.Seen, "it marks the message as seen") s.Require().True(outputMessage.Seen, "it marks the message as seen")
s.Require().Equal(outputMessage.OutgoingStatus, OutgoingStatusSending, "it marks the message as sending") s.Require().Equal(outputMessage.OutgoingStatus, common.OutgoingStatusSending, "it marks the message as sending")
s.Require().NotEmpty(outputMessage.ID, "it sets the ID field") s.Require().NotEmpty(outputMessage.ID, "it sets the ID field")
s.Require().Equal(protobuf.MessageType_ONE_TO_ONE, outputMessage.MessageType) s.Require().Equal(protobuf.MessageType_ONE_TO_ONE, outputMessage.MessageType)
} }
@ -422,13 +423,13 @@ func (s *MessengerSuite) TestSendPrivateGroup() {
_, err = s.m.AddMembersToGroupChat(context.Background(), chat.ID, members) _, err = s.m.AddMembersToGroupChat(context.Background(), chat.ID, members)
s.NoError(err) s.NoError(err)
inputMessage := &Message{} inputMessage := &common.Message{}
inputMessage.ChatId = chat.ID inputMessage.ChatId = chat.ID
chat.LastClockValue = uint64(100000000000000) chat.LastClockValue = uint64(100000000000000)
err = s.m.SaveChat(chat) err = s.m.SaveChat(chat)
s.NoError(err) s.NoError(err)
response, err = s.m.SendChatMessage(context.Background(), inputMessage) response, err = s.m.SendChatMessage(context.Background(), inputMessage)
s.NoError(err) s.Require().NoError(err)
s.Require().Equal(1, len(response.Messages), "it returns the message") s.Require().Equal(1, len(response.Messages), "it returns the message")
outputMessage := response.Messages[0] outputMessage := response.Messages[0]
@ -438,7 +439,7 @@ func (s *MessengerSuite) TestSendPrivateGroup() {
s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp") s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp")
s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field") s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field")
s.Require().True(outputMessage.Seen, "it marks the message as seen") s.Require().True(outputMessage.Seen, "it marks the message as seen")
s.Require().Equal(outputMessage.OutgoingStatus, OutgoingStatusSending, "it marks the message as sending") s.Require().Equal(outputMessage.OutgoingStatus, common.OutgoingStatusSending, "it marks the message as sending")
s.Require().NotEmpty(outputMessage.ID, "it sets the ID field") s.Require().NotEmpty(outputMessage.ID, "it sets the ID field")
s.Require().Equal(protobuf.MessageType_PRIVATE_GROUP, outputMessage.MessageType) s.Require().Equal(protobuf.MessageType_PRIVATE_GROUP, outputMessage.MessageType)
} }
@ -450,7 +451,7 @@ func (s *MessengerSuite) TestSendPrivateEmptyGroup() {
chat := response.Chats[0] chat := response.Chats[0]
inputMessage := &Message{} inputMessage := &common.Message{}
inputMessage.ChatId = chat.ID inputMessage.ChatId = chat.ID
chat.LastClockValue = uint64(100000000000000) chat.LastClockValue = uint64(100000000000000)
err = s.m.SaveChat(chat) err = s.m.SaveChat(chat)
@ -466,7 +467,7 @@ func (s *MessengerSuite) TestSendPrivateEmptyGroup() {
s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp") s.Require().NotEqual(uint64(0), chat.Timestamp, "it sets the timestamp")
s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field") s.Require().Equal("0x"+hex.EncodeToString(crypto.FromECDSAPub(&s.privateKey.PublicKey)), outputMessage.From, "it sets the From field")
s.Require().True(outputMessage.Seen, "it marks the message as seen") s.Require().True(outputMessage.Seen, "it marks the message as seen")
s.Require().Equal(outputMessage.OutgoingStatus, OutgoingStatusSending, "it marks the message as sending") s.Require().Equal(outputMessage.OutgoingStatus, common.OutgoingStatusSending, "it marks the message as sending")
s.Require().NotEmpty(outputMessage.ID, "it sets the ID field") s.Require().NotEmpty(outputMessage.ID, "it sets the ID field")
s.Require().Equal(protobuf.MessageType_PRIVATE_GROUP, outputMessage.MessageType) s.Require().Equal(protobuf.MessageType_PRIVATE_GROUP, outputMessage.MessageType)
} }
@ -962,7 +963,7 @@ func (s *MessengerSuite) TestChatPersistencePublic() {
LastClockValue: 20, LastClockValue: 20,
DeletedAtClockValue: 30, DeletedAtClockValue: 30,
UnviewedMessagesCount: 40, UnviewedMessagesCount: 40,
LastMessage: &Message{}, LastMessage: &common.Message{},
} }
s.Require().NoError(s.m.SaveChat(&chat)) s.Require().NoError(s.m.SaveChat(&chat))
@ -987,7 +988,7 @@ func (s *MessengerSuite) TestDeleteChat() {
LastClockValue: 20, LastClockValue: 20,
DeletedAtClockValue: 30, DeletedAtClockValue: 30,
UnviewedMessagesCount: 40, UnviewedMessagesCount: 40,
LastMessage: &Message{}, LastMessage: &common.Message{},
} }
s.Require().NoError(s.m.SaveChat(&chat)) s.Require().NoError(s.m.SaveChat(&chat))
@ -1010,7 +1011,7 @@ func (s *MessengerSuite) TestChatPersistenceUpdate() {
LastClockValue: 20, LastClockValue: 20,
DeletedAtClockValue: 30, DeletedAtClockValue: 30,
UnviewedMessagesCount: 40, UnviewedMessagesCount: 40,
LastMessage: &Message{}, LastMessage: &common.Message{},
} }
s.Require().NoError(s.m.SaveChat(&chat)) s.Require().NoError(s.m.SaveChat(&chat))
@ -1044,7 +1045,7 @@ func (s *MessengerSuite) TestChatPersistenceOneToOne() {
LastClockValue: 20, LastClockValue: 20,
DeletedAtClockValue: 30, DeletedAtClockValue: 30,
UnviewedMessagesCount: 40, UnviewedMessagesCount: 40,
LastMessage: &Message{}, LastMessage: &common.Message{},
} }
contact := Contact{ contact := Contact{
ID: testPK, ID: testPK,
@ -1133,7 +1134,7 @@ func (s *MessengerSuite) TestChatPersistencePrivateGroupChat() {
LastClockValue: 20, LastClockValue: 20,
DeletedAtClockValue: 30, DeletedAtClockValue: 30,
UnviewedMessagesCount: 40, UnviewedMessagesCount: 40,
LastMessage: &Message{}, LastMessage: &common.Message{},
} }
s.Require().NoError(s.m.SaveChat(&chat)) s.Require().NoError(s.m.SaveChat(&chat))
savedChats := s.m.Chats() savedChats := s.m.Chats()
@ -1211,7 +1212,7 @@ func (s *MessengerSuite) TestBlockContact() {
contact.Name = "blocked" contact.Name = "blocked"
messages := []*Message{ messages := []*common.Message{
{ {
ID: "test-1", ID: "test-1",
LocalChatID: chat2.ID, LocalChatID: chat2.ID,
@ -1479,7 +1480,7 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestAddressForTransaction, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransaction, senderMessage.CommandParameters.CommandState)
// Wait for the message to reach its destination // Wait for the message to reach its destination
response, err = WaitOnMessengerResponse( response, err = WaitOnMessengerResponse(
@ -1500,7 +1501,7 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
s.Require().Equal(value, receiverMessage.CommandParameters.Value) s.Require().Equal(value, receiverMessage.CommandParameters.Value)
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestAddressForTransaction, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransaction, receiverMessage.CommandParameters.CommandState)
// We decline the request // We decline the request
response, err = theirMessenger.DeclineRequestAddressForTransaction(context.Background(), receiverMessage.ID) response, err = theirMessenger.DeclineRequestAddressForTransaction(context.Background(), receiverMessage.ID)
@ -1514,7 +1515,7 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
s.Require().NotNil(senderMessage.CommandParameters) s.Require().NotNil(senderMessage.CommandParameters)
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(CommandStateRequestAddressForTransactionDeclined, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransactionDeclined, senderMessage.CommandParameters.CommandState)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(receiverMessage.ID, senderMessage.Replace) s.Require().Equal(receiverMessage.ID, senderMessage.Replace)
@ -1535,7 +1536,7 @@ func (s *MessengerSuite) TestDeclineRequestAddressForTransaction() {
s.Require().NotNil(receiverMessage.CommandParameters) s.Require().NotNil(receiverMessage.CommandParameters)
s.Require().Equal(value, receiverMessage.CommandParameters.Value) s.Require().Equal(value, receiverMessage.CommandParameters.Value)
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(CommandStateRequestAddressForTransactionDeclined, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransactionDeclined, receiverMessage.CommandParameters.CommandState)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(initialCommandID, receiverMessage.Replace) s.Require().Equal(initialCommandID, receiverMessage.Replace)
s.Require().NoError(theirMessenger.Shutdown()) s.Require().NoError(theirMessenger.Shutdown())
@ -1574,7 +1575,7 @@ func (s *MessengerSuite) TestSendEthTransaction() {
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(signature, senderMessage.CommandParameters.Signature) s.Require().Equal(signature, senderMessage.CommandParameters.Signature)
s.Require().Equal(CommandStateTransactionSent, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, senderMessage.CommandParameters.CommandState)
s.Require().NotEmpty(senderMessage.ID) s.Require().NotEmpty(senderMessage.ID)
s.Require().Equal("", senderMessage.Replace) s.Require().Equal("", senderMessage.Replace)
@ -1638,7 +1639,7 @@ func (s *MessengerSuite) TestSendEthTransaction() {
s.Require().Equal(transactionHash, receiverMessage.CommandParameters.TransactionHash) s.Require().Equal(transactionHash, receiverMessage.CommandParameters.TransactionHash)
s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address)
s.Require().Equal("", receiverMessage.CommandParameters.ID) s.Require().Equal("", receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState)
s.Require().Equal(senderMessage.ID, receiverMessage.ID) s.Require().Equal(senderMessage.ID, receiverMessage.ID)
s.Require().Equal("", receiverMessage.Replace) s.Require().Equal("", receiverMessage.Replace)
s.Require().NoError(theirMessenger.Shutdown()) s.Require().NoError(theirMessenger.Shutdown())
@ -1677,7 +1678,7 @@ func (s *MessengerSuite) TestSendTokenTransaction() {
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(signature, senderMessage.CommandParameters.Signature) s.Require().Equal(signature, senderMessage.CommandParameters.Signature)
s.Require().Equal(CommandStateTransactionSent, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, senderMessage.CommandParameters.CommandState)
s.Require().NotEmpty(senderMessage.ID) s.Require().NotEmpty(senderMessage.ID)
var transactions []*TransactionToValidate var transactions []*TransactionToValidate
@ -1741,7 +1742,7 @@ func (s *MessengerSuite) TestSendTokenTransaction() {
s.Require().Equal(transactionHash, receiverMessage.CommandParameters.TransactionHash) s.Require().Equal(transactionHash, receiverMessage.CommandParameters.TransactionHash)
s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address)
s.Require().Equal("", receiverMessage.CommandParameters.ID) s.Require().Equal("", receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState)
s.Require().Equal(senderMessage.ID, receiverMessage.ID) s.Require().Equal(senderMessage.ID, receiverMessage.ID)
s.Require().Equal(senderMessage.Replace, senderMessage.Replace) s.Require().Equal(senderMessage.Replace, senderMessage.Replace)
s.Require().NoError(theirMessenger.Shutdown()) s.Require().NoError(theirMessenger.Shutdown())
@ -1775,7 +1776,7 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestAddressForTransaction, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransaction, senderMessage.CommandParameters.CommandState)
// Wait for the message to reach its destination // Wait for the message to reach its destination
response, err = WaitOnMessengerResponse( response, err = WaitOnMessengerResponse(
@ -1796,7 +1797,7 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
s.Require().Equal(value, receiverMessage.CommandParameters.Value) s.Require().Equal(value, receiverMessage.CommandParameters.Value)
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestAddressForTransaction, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransaction, receiverMessage.CommandParameters.CommandState)
// We accept the request // We accept the request
response, err = theirMessenger.AcceptRequestAddressForTransaction(context.Background(), receiverMessage.ID, "some-address") response, err = theirMessenger.AcceptRequestAddressForTransaction(context.Background(), receiverMessage.ID, "some-address")
@ -1810,7 +1811,7 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
s.Require().NotNil(senderMessage.CommandParameters) s.Require().NotNil(senderMessage.CommandParameters)
s.Require().Equal(value, senderMessage.CommandParameters.Value) s.Require().Equal(value, senderMessage.CommandParameters.Value)
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(CommandStateRequestAddressForTransactionAccepted, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransactionAccepted, senderMessage.CommandParameters.CommandState)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal("some-address", senderMessage.CommandParameters.Address) s.Require().Equal("some-address", senderMessage.CommandParameters.Address)
s.Require().Equal(receiverMessage.ID, senderMessage.Replace) s.Require().Equal(receiverMessage.ID, senderMessage.Replace)
@ -1832,7 +1833,7 @@ func (s *MessengerSuite) TestAcceptRequestAddressForTransaction() {
s.Require().NotNil(receiverMessage.CommandParameters) s.Require().NotNil(receiverMessage.CommandParameters)
s.Require().Equal(value, receiverMessage.CommandParameters.Value) s.Require().Equal(value, receiverMessage.CommandParameters.Value)
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(CommandStateRequestAddressForTransactionAccepted, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestAddressForTransactionAccepted, receiverMessage.CommandParameters.CommandState)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal("some-address", receiverMessage.CommandParameters.Address) s.Require().Equal("some-address", receiverMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, receiverMessage.Replace) s.Require().Equal(initialCommandID, receiverMessage.Replace)
@ -1868,7 +1869,7 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(receiverAddressString, senderMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, senderMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestTransaction, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransaction, senderMessage.CommandParameters.CommandState)
// Wait for the message to reach its destination // Wait for the message to reach its destination
response, err = WaitOnMessengerResponse( response, err = WaitOnMessengerResponse(
@ -1890,7 +1891,7 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestTransaction, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransaction, receiverMessage.CommandParameters.CommandState)
response, err = theirMessenger.DeclineRequestTransaction(context.Background(), initialCommandID) response, err = theirMessenger.DeclineRequestTransaction(context.Background(), initialCommandID)
s.Require().NoError(err) s.Require().NoError(err)
@ -1904,7 +1905,7 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().Equal("Transaction request declined", senderMessage.Text) s.Require().Equal("Transaction request declined", senderMessage.Text)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(receiverMessage.ID, senderMessage.Replace) s.Require().Equal(receiverMessage.ID, senderMessage.Replace)
s.Require().Equal(CommandStateRequestTransactionDeclined, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransactionDeclined, senderMessage.CommandParameters.CommandState)
// Wait for the message to reach its destination // Wait for the message to reach its destination
response, err = WaitOnMessengerResponse( response, err = WaitOnMessengerResponse(
@ -1924,7 +1925,7 @@ func (s *MessengerSuite) TestDeclineRequestTransaction() {
s.Require().Equal("Transaction request declined", receiverMessage.Text) s.Require().Equal("Transaction request declined", receiverMessage.Text)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(initialCommandID, receiverMessage.Replace) s.Require().Equal(initialCommandID, receiverMessage.Replace)
s.Require().Equal(CommandStateRequestTransactionDeclined, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransactionDeclined, receiverMessage.CommandParameters.CommandState)
s.Require().NoError(theirMessenger.Shutdown()) s.Require().NoError(theirMessenger.Shutdown())
} }
@ -1957,7 +1958,7 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().Equal(contract, senderMessage.CommandParameters.Contract) s.Require().Equal(contract, senderMessage.CommandParameters.Contract)
s.Require().Equal(receiverAddressString, senderMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, senderMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, senderMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestTransaction, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransaction, senderMessage.CommandParameters.CommandState)
// Wait for the message to reach its destination // Wait for the message to reach its destination
response, err = WaitOnMessengerResponse( response, err = WaitOnMessengerResponse(
@ -1979,7 +1980,7 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().Equal(contract, receiverMessage.CommandParameters.Contract) s.Require().Equal(contract, receiverMessage.CommandParameters.Contract)
s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(CommandStateRequestTransaction, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateRequestTransaction, receiverMessage.CommandParameters.CommandState)
transactionHash := "0x412a851ac2ae51cad34a56c8a9cfee55d577ac5e1ac71cf488a2f2093a373799" transactionHash := "0x412a851ac2ae51cad34a56c8a9cfee55d577ac5e1ac71cf488a2f2093a373799"
signature, err := buildSignature(theirMessenger.identity, &theirMessenger.identity.PublicKey, transactionHash) signature, err := buildSignature(theirMessenger.identity, &theirMessenger.identity.PublicKey, transactionHash)
@ -2003,7 +2004,7 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().Equal(signature, senderMessage.CommandParameters.Signature) s.Require().Equal(signature, senderMessage.CommandParameters.Signature)
s.Require().NotEmpty(senderMessage.ID) s.Require().NotEmpty(senderMessage.ID)
s.Require().Equal(receiverMessage.ID, senderMessage.Replace) s.Require().Equal(receiverMessage.ID, senderMessage.Replace)
s.Require().Equal(CommandStateTransactionSent, senderMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, senderMessage.CommandParameters.CommandState)
var transactions []*TransactionToValidate var transactions []*TransactionToValidate
// Wait for the message to reach its destination // Wait for the message to reach its destination
@ -2068,7 +2069,7 @@ func (s *MessengerSuite) TestRequestTransaction() {
s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address) s.Require().Equal(receiverAddressString, receiverMessage.CommandParameters.Address)
s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID) s.Require().Equal(initialCommandID, receiverMessage.CommandParameters.ID)
s.Require().Equal(signature, receiverMessage.CommandParameters.Signature) s.Require().Equal(signature, receiverMessage.CommandParameters.Signature)
s.Require().Equal(CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState) s.Require().Equal(common.CommandStateTransactionSent, receiverMessage.CommandParameters.CommandState)
s.Require().Equal(senderMessage.ID, receiverMessage.ID) s.Require().Equal(senderMessage.ID, receiverMessage.ID)
s.Require().Equal(senderMessage.Replace, senderMessage.Replace) s.Require().Equal(senderMessage.Replace, senderMessage.Replace)
s.Require().NoError(theirMessenger.Shutdown()) s.Require().NoError(theirMessenger.Shutdown())
@ -2102,7 +2103,7 @@ func (m *mockSendMessagesRequest) SendMessagesRequest(peerID []byte, request typ
} }
func (s *MessengerSuite) TestMessageJSON() { func (s *MessengerSuite) TestMessageJSON() {
message := &Message{ message := &common.Message{
ID: "test-1", ID: "test-1",
LocalChatID: "local-chat-id", LocalChatID: "local-chat-id",
Alias: "alias", Alias: "alias",
@ -2121,7 +2122,7 @@ func (s *MessengerSuite) TestMessageJSON() {
s.Require().NoError(err) s.Require().NoError(err)
s.Require().Equal(expectedJSON, string(messageJSON)) s.Require().Equal(expectedJSON, string(messageJSON))
decodedMessage := &Message{} decodedMessage := &common.Message{}
err = json.Unmarshal([]byte(expectedJSON), decodedMessage) err = json.Unmarshal([]byte(expectedJSON), decodedMessage)
s.Require().NoError(err) s.Require().NoError(err)
s.Require().Equal(message, decodedMessage) s.Require().Equal(message, decodedMessage)
@ -2186,14 +2187,14 @@ func (s *MessageHandlerSuite) TestRun() {
Name string Name string
Error bool Error bool
Chat Chat // Chat to create Chat Chat // Chat to create
Message Message Message common.Message
SigPubKey *ecdsa.PublicKey SigPubKey *ecdsa.PublicKey
ExpectedChatID string ExpectedChatID string
}{ }{
{ {
Name: "Public chat", Name: "Public chat",
Chat: CreatePublicChat("test-chat", &testTimeSource{}), Chat: CreatePublicChat("test-chat", &testTimeSource{}),
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "test-chat", ChatId: "test-chat",
MessageType: protobuf.MessageType_PUBLIC_GROUP, MessageType: protobuf.MessageType_PUBLIC_GROUP,
@ -2205,7 +2206,7 @@ func (s *MessageHandlerSuite) TestRun() {
{ {
Name: "Private message from myself with existing chat", Name: "Private message from myself with existing chat",
Chat: CreateOneToOneChat("test-private-chat", &key1.PublicKey, &testTimeSource{}), Chat: CreateOneToOneChat("test-private-chat", &key1.PublicKey, &testTimeSource{}),
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "test-chat", ChatId: "test-chat",
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
@ -2217,7 +2218,7 @@ func (s *MessageHandlerSuite) TestRun() {
{ {
Name: "Private message from other with existing chat", Name: "Private message from other with existing chat",
Chat: CreateOneToOneChat("test-private-chat", &key2.PublicKey, &testTimeSource{}), Chat: CreateOneToOneChat("test-private-chat", &key2.PublicKey, &testTimeSource{}),
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "test-chat", ChatId: "test-chat",
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
@ -2229,7 +2230,7 @@ func (s *MessageHandlerSuite) TestRun() {
}, },
{ {
Name: "Private message from myself without chat", Name: "Private message from myself without chat",
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "test-chat", ChatId: "test-chat",
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
@ -2241,7 +2242,7 @@ func (s *MessageHandlerSuite) TestRun() {
}, },
{ {
Name: "Private message from other without chat", Name: "Private message from other without chat",
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "test-chat", ChatId: "test-chat",
MessageType: protobuf.MessageType_ONE_TO_ONE, MessageType: protobuf.MessageType_ONE_TO_ONE,
@ -2258,7 +2259,7 @@ func (s *MessageHandlerSuite) TestRun() {
}, },
{ {
Name: "Private group message", Name: "Private group message",
Message: Message{ Message: common.Message{
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
ChatId: "non-existing-chat", ChatId: "non-existing-chat",
MessageType: protobuf.MessageType_PRIVATE_GROUP, MessageType: protobuf.MessageType_PRIVATE_GROUP,

View File

@ -266,7 +266,7 @@ func (db sqlitePersistence) chats(tx *sql.Tx) (chats []*Chat, err error) {
// Restore last message // Restore last message
if lastMessageBytes != nil { if lastMessageBytes != nil {
message := &Message{} message := &common.Message{}
if err = json.Unmarshal(lastMessageBytes, message); err != nil { if err = json.Unmarshal(lastMessageBytes, message); err != nil {
return return
} }
@ -346,7 +346,7 @@ func (db sqlitePersistence) Chat(chatID string) (*Chat, error) {
// Restore last message // Restore last message
if lastMessageBytes != nil { if lastMessageBytes != nil {
message := &Message{} message := &common.Message{}
if err = json.Unmarshal(lastMessageBytes, message); err != nil { if err = json.Unmarshal(lastMessageBytes, message); err != nil {
return nil, err return nil, err
} }

View File

@ -13,6 +13,7 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/sqlite" "github.com/status-im/status-go/protocol/sqlite"
) )
@ -103,9 +104,9 @@ func TestMessageByChatID(t *testing.T) {
count := 1000 count := 1000
pageSize := 50 pageSize := 50
var messages []*Message var messages []*common.Message
for i := 0; i < count; i++ { for i := 0; i < count; i++ {
messages = append(messages, &Message{ messages = append(messages, &common.Message{
ID: strconv.Itoa(i), ID: strconv.Itoa(i),
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -116,7 +117,7 @@ func TestMessageByChatID(t *testing.T) {
// Add some other chats. // Add some other chats.
if count%5 == 0 { if count%5 == 0 {
messages = append(messages, &Message{ messages = append(messages, &common.Message{
ID: strconv.Itoa(count + i), ID: strconv.Itoa(count + i),
LocalChatID: "other-chat", LocalChatID: "other-chat",
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -132,7 +133,7 @@ func TestMessageByChatID(t *testing.T) {
outOfOrderCount := pageSize + 1 outOfOrderCount := pageSize + 1
allCount := count + outOfOrderCount allCount := count + outOfOrderCount
for i := 0; i < pageSize+1; i++ { for i := 0; i < pageSize+1; i++ {
messages = append(messages, &Message{ messages = append(messages, &common.Message{
ID: strconv.Itoa(count*2 + i), ID: strconv.Itoa(count*2 + i),
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -147,13 +148,13 @@ func TestMessageByChatID(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
var ( var (
result []*Message result []*common.Message
cursor string cursor string
iter int iter int
) )
for { for {
var ( var (
items []*Message items []*common.Message
err error err error
) )
@ -183,7 +184,7 @@ func TestMessageReplies(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
p := sqlitePersistence{db: db} p := sqlitePersistence{db: db}
chatID := testPublicChatID chatID := testPublicChatID
message1 := &Message{ message1 := &common.Message{
ID: "id-1", ID: "id-1",
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -192,7 +193,7 @@ func TestMessageReplies(t *testing.T) {
}, },
From: "1", From: "1",
} }
message2 := &Message{ message2 := &common.Message{
ID: "id-2", ID: "id-2",
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -204,7 +205,7 @@ func TestMessageReplies(t *testing.T) {
From: "2", From: "2",
} }
message3 := &Message{ message3 := &common.Message{
ID: "id-3", ID: "id-3",
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -215,7 +216,7 @@ func TestMessageReplies(t *testing.T) {
From: "3", From: "3",
} }
messages := []*Message{message1, message2, message3} messages := []*common.Message{message1, message2, message3}
err = p.SaveMessages(messages) err = p.SaveMessages(messages)
require.NoError(t, err) require.NoError(t, err)
@ -227,7 +228,7 @@ func TestMessageReplies(t *testing.T) {
require.Nil(t, retrievedMessages[0].QuotedMessage) require.Nil(t, retrievedMessages[0].QuotedMessage)
require.Equal(t, "id-1", retrievedMessages[1].ResponseTo) require.Equal(t, "id-1", retrievedMessages[1].ResponseTo)
require.Equal(t, &QuotedMessage{From: "1", Text: "content-1"}, retrievedMessages[1].QuotedMessage) require.Equal(t, &common.QuotedMessage{From: "1", Text: "content-1"}, retrievedMessages[1].QuotedMessage)
require.Equal(t, "", retrievedMessages[2].ResponseTo) require.Equal(t, "", retrievedMessages[2].ResponseTo)
require.Nil(t, retrievedMessages[2].QuotedMessage) require.Nil(t, retrievedMessages[2].QuotedMessage)
@ -242,10 +243,10 @@ func TestMessageByChatIDWithTheSameClocks(t *testing.T) {
count := len(clockValues) count := len(clockValues)
pageSize := 2 pageSize := 2
var messages []*Message var messages []*common.Message
for i, clock := range clockValues { for i, clock := range clockValues {
messages = append(messages, &Message{ messages = append(messages, &common.Message{
ID: strconv.Itoa(i), ID: strconv.Itoa(i),
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{ ChatMessage: protobuf.ChatMessage{
@ -259,13 +260,13 @@ func TestMessageByChatIDWithTheSameClocks(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
var ( var (
result []*Message result []*common.Message
cursor string cursor string
iter int iter int
) )
for { for {
var ( var (
items []*Message items []*common.Message
err error err error
) )
@ -324,14 +325,14 @@ func TestDeleteMessagesByChatID(t *testing.T) {
err = insertMinimalMessage(p, "2") err = insertMinimalMessage(p, "2")
require.NoError(t, err) require.NoError(t, err)
m, _, err := p.MessageByChatID("chat-id", "", 10) m, _, err := p.MessageByChatID(testPublicChatID, "", 10)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, 2, len(m)) require.Equal(t, 2, len(m))
err = p.DeleteMessagesByChatID("chat-id") err = p.DeleteMessagesByChatID(testPublicChatID)
require.NoError(t, err) require.NoError(t, err)
m, _, err = p.MessageByChatID("chat-id", "", 10) m, _, err = p.MessageByChatID(testPublicChatID, "", 10)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, 0, len(m)) require.Equal(t, 0, len(m))
@ -390,7 +391,7 @@ func TestPersistenceEmojiReactions(t *testing.T) {
from2 := "from-2" from2 := "from-2"
from3 := "from-3" from3 := "from-3"
chatID := "chat-id" chatID := testPublicChatID
err = insertMinimalMessage(p, id1) err = insertMinimalMessage(p, id1)
require.NoError(t, err) require.NoError(t, err)
@ -487,9 +488,9 @@ func openTestDB() (*sql.DB, error) {
} }
func insertMinimalMessage(p sqlitePersistence, id string) error { func insertMinimalMessage(p sqlitePersistence, id string) error {
return p.SaveMessages([]*Message{{ return p.SaveMessages([]*common.Message{{
ID: id, ID: id,
LocalChatID: "chat-id", LocalChatID: testPublicChatID,
ChatMessage: protobuf.ChatMessage{Text: "some-text"}, ChatMessage: protobuf.ChatMessage{Text: "some-text"},
From: "me", From: "me",
}}) }})
@ -512,7 +513,7 @@ func TestMessagesAudioDurationMsNull(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.Len(t, m, 1) require.Len(t, m, 1)
m, _, err = p.MessageByChatID("chat-id", "", 10) m, _, err = p.MessageByChatID(testPublicChatID, "", 10)
require.NoError(t, err) require.NoError(t, err)
require.Len(t, m, 1) require.Len(t, m, 1)
} }
@ -523,7 +524,7 @@ func TestSaveChat(t *testing.T) {
p := sqlitePersistence{db: db} p := sqlitePersistence{db: db}
chat := CreatePublicChat("test-chat", &testTimeSource{}) chat := CreatePublicChat("test-chat", &testTimeSource{})
chat.LastMessage = &Message{} chat.LastMessage = &common.Message{}
err = p.SaveChat(chat) err = p.SaveChat(chat)
require.NoError(t, err) require.NoError(t, err)
@ -533,7 +534,7 @@ func TestSaveChat(t *testing.T) {
} }
func TestSaveMentions(t *testing.T) { func TestSaveMentions(t *testing.T) {
chatID := "chat-id" chatID := testPublicChatID
db, err := openTestDB() db, err := openTestDB()
require.NoError(t, err) require.NoError(t, err)
p := sqlitePersistence{db: db} p := sqlitePersistence{db: db}
@ -543,7 +544,7 @@ func TestSaveMentions(t *testing.T) {
pkString := types.EncodeHex(crypto.FromECDSAPub(&key.PublicKey)) pkString := types.EncodeHex(crypto.FromECDSAPub(&key.PublicKey))
message := Message{ message := common.Message{
ID: "1", ID: "1",
LocalChatID: chatID, LocalChatID: chatID,
ChatMessage: protobuf.ChatMessage{Text: "some-text"}, ChatMessage: protobuf.ChatMessage{Text: "some-text"},
@ -551,7 +552,7 @@ func TestSaveMentions(t *testing.T) {
Mentions: []string{pkString}, Mentions: []string{pkString},
} }
err = p.SaveMessages([]*Message{&message}) err = p.SaveMessages([]*common.Message{&message})
require.NoError(t, err) require.NoError(t, err)
retrievedMessages, _, err := p.MessageByChatID(chatID, "", 10) retrievedMessages, _, err := p.MessageByChatID(chatID, "", 10)

View File

@ -142,21 +142,23 @@ func (PushNotificationReport_ErrorType) EnumDescriptor() ([]byte, []int) {
} }
type PushNotificationRegistration struct { type PushNotificationRegistration struct {
TokenType PushNotificationRegistration_TokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.PushNotificationRegistration_TokenType" json:"token_type,omitempty"` TokenType PushNotificationRegistration_TokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.PushNotificationRegistration_TokenType" json:"token_type,omitempty"`
DeviceToken string `protobuf:"bytes,2,opt,name=device_token,json=deviceToken,proto3" json:"device_token,omitempty"` DeviceToken string `protobuf:"bytes,2,opt,name=device_token,json=deviceToken,proto3" json:"device_token,omitempty"`
InstallationId string `protobuf:"bytes,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` InstallationId string `protobuf:"bytes,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"`
AccessToken string `protobuf:"bytes,4,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` AccessToken string `protobuf:"bytes,4,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"`
Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"`
AllowedKeyList [][]byte `protobuf:"bytes,7,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"` AllowedKeyList [][]byte `protobuf:"bytes,7,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"`
BlockedChatList [][]byte `protobuf:"bytes,8,rep,name=blocked_chat_list,json=blockedChatList,proto3" json:"blocked_chat_list,omitempty"` BlockedChatList [][]byte `protobuf:"bytes,8,rep,name=blocked_chat_list,json=blockedChatList,proto3" json:"blocked_chat_list,omitempty"`
Unregister bool `protobuf:"varint,9,opt,name=unregister,proto3" json:"unregister,omitempty"` Unregister bool `protobuf:"varint,9,opt,name=unregister,proto3" json:"unregister,omitempty"`
Grant []byte `protobuf:"bytes,10,opt,name=grant,proto3" json:"grant,omitempty"` Grant []byte `protobuf:"bytes,10,opt,name=grant,proto3" json:"grant,omitempty"`
AllowFromContactsOnly bool `protobuf:"varint,11,opt,name=allow_from_contacts_only,json=allowFromContactsOnly,proto3" json:"allow_from_contacts_only,omitempty"` AllowFromContactsOnly bool `protobuf:"varint,11,opt,name=allow_from_contacts_only,json=allowFromContactsOnly,proto3" json:"allow_from_contacts_only,omitempty"`
ApnTopic string `protobuf:"bytes,12,opt,name=apn_topic,json=apnTopic,proto3" json:"apn_topic,omitempty"` ApnTopic string `protobuf:"bytes,12,opt,name=apn_topic,json=apnTopic,proto3" json:"apn_topic,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` BlockMentions bool `protobuf:"varint,13,opt,name=block_mentions,json=blockMentions,proto3" json:"block_mentions,omitempty"`
XXX_unrecognized []byte `json:"-"` AllowedMentionsChatList [][]byte `protobuf:"bytes,14,rep,name=allowed_mentions_chat_list,json=allowedMentionsChatList,proto3" json:"allowed_mentions_chat_list,omitempty"`
XXX_sizecache int32 `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *PushNotificationRegistration) Reset() { *m = PushNotificationRegistration{} } func (m *PushNotificationRegistration) Reset() { *m = PushNotificationRegistration{} }
@ -268,6 +270,20 @@ func (m *PushNotificationRegistration) GetApnTopic() string {
return "" return ""
} }
func (m *PushNotificationRegistration) GetBlockMentions() bool {
if m != nil {
return m.BlockMentions
}
return false
}
func (m *PushNotificationRegistration) GetAllowedMentionsChatList() [][]byte {
if m != nil {
return m.AllowedMentionsChatList
}
return nil
}
type PushNotificationRegistrationResponse struct { type PushNotificationRegistrationResponse struct {
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"`
@ -799,65 +815,67 @@ func init() {
func init() { proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) } func init() { proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) }
var fileDescriptor_200acd86044eaa5d = []byte{ var fileDescriptor_200acd86044eaa5d = []byte{
// 952 bytes of a gzipped FileDescriptorProto // 990 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x51, 0x6f, 0xe3, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4d, 0x6f, 0xe3, 0x44,
0x10, 0xc6, 0x4e, 0xda, 0x24, 0x93, 0x90, 0xba, 0xab, 0xb6, 0x67, 0x0e, 0x7a, 0x04, 0x83, 0x44, 0x18, 0xc6, 0x4e, 0xda, 0x24, 0x6f, 0xd2, 0xd4, 0x1d, 0xf5, 0xc3, 0x14, 0xba, 0x04, 0x03, 0x22,
0xd4, 0x87, 0x80, 0x8a, 0xc4, 0x9d, 0x78, 0x22, 0xa4, 0x4e, 0xcf, 0x6a, 0x63, 0x87, 0x8d, 0xcb, 0xea, 0x21, 0xa0, 0x22, 0xb1, 0x2b, 0xb8, 0x10, 0x52, 0xa7, 0x6b, 0xb5, 0xb1, 0xc3, 0xc4, 0x65,
0xe9, 0x24, 0x24, 0xcb, 0xb1, 0x37, 0xad, 0x55, 0xd7, 0x6b, 0xbc, 0x9b, 0xa2, 0xbc, 0xf1, 0x03, 0xb5, 0x12, 0xd2, 0xc8, 0xb1, 0x27, 0xad, 0x55, 0xd7, 0x36, 0x1e, 0xa7, 0x28, 0x37, 0x7e, 0x00,
0x78, 0xe1, 0x95, 0x9f, 0xc1, 0x33, 0xff, 0x80, 0x3f, 0x85, 0xbc, 0xb6, 0xd3, 0xb4, 0x71, 0xd3, 0x17, 0xae, 0x9c, 0xf8, 0x0d, 0xfc, 0x0d, 0xfe, 0x14, 0xf2, 0xd8, 0xce, 0xba, 0x8d, 0x9b, 0x16,
0x22, 0xf1, 0x94, 0xcc, 0x37, 0x3b, 0x33, 0xbb, 0xf3, 0xcd, 0x37, 0x06, 0x35, 0x9e, 0xb3, 0x2b, 0x69, 0x4f, 0xc9, 0x3c, 0xef, 0xc7, 0xcc, 0xfb, 0xf1, 0x3c, 0x06, 0x39, 0x9c, 0xb3, 0x6b, 0xe2,
0x27, 0xa2, 0x3c, 0x98, 0x05, 0x9e, 0xcb, 0x03, 0x1a, 0xb1, 0x5e, 0x9c, 0x50, 0x4e, 0x51, 0x5d, 0x07, 0xb1, 0x3b, 0x73, 0x6d, 0x2b, 0x76, 0x03, 0x9f, 0xf5, 0xc2, 0x28, 0x88, 0x03, 0x54, 0xe7,
0xfc, 0x4c, 0xe7, 0x33, 0xed, 0xef, 0x2a, 0x7c, 0x32, 0x9e, 0xb3, 0x2b, 0x73, 0xe5, 0x14, 0x26, 0x3f, 0xd3, 0xf9, 0x4c, 0xf9, 0x7b, 0x03, 0x3e, 0x1e, 0xcf, 0xd9, 0xb5, 0x5e, 0xf0, 0xc2, 0xf4,
0x97, 0x01, 0xe3, 0x89, 0xf8, 0x8f, 0x2c, 0x00, 0x4e, 0xaf, 0x49, 0xe4, 0xf0, 0x45, 0x4c, 0x54, 0xca, 0x65, 0x71, 0xc4, 0xff, 0x23, 0x03, 0x20, 0x0e, 0x6e, 0xa8, 0x4f, 0xe2, 0x45, 0x48, 0x65,
0xa9, 0x23, 0x75, 0xdb, 0xc7, 0x5f, 0xf7, 0x8a, 0xf8, 0xde, 0xa6, 0xd8, 0x9e, 0x9d, 0x06, 0xda, 0xa1, 0x23, 0x74, 0xdb, 0x27, 0x5f, 0xf7, 0xf2, 0xf8, 0xde, 0xba, 0xd8, 0x9e, 0x99, 0x04, 0x9a,
0x8b, 0x98, 0xe0, 0x06, 0x2f, 0xfe, 0xa2, 0xcf, 0xa0, 0xe5, 0x93, 0xdb, 0xc0, 0x23, 0x8e, 0xc0, 0x8b, 0x90, 0xe2, 0x46, 0x9c, 0xff, 0x45, 0x9f, 0x42, 0xcb, 0xa1, 0x77, 0xae, 0x4d, 0x09, 0xc7,
0x54, 0xb9, 0x23, 0x75, 0x1b, 0xb8, 0x99, 0x61, 0x22, 0x02, 0x7d, 0x09, 0x3b, 0x41, 0xc4, 0xb8, 0x64, 0xb1, 0x23, 0x74, 0x1b, 0xb8, 0x99, 0x62, 0x3c, 0x02, 0x7d, 0x09, 0xdb, 0xae, 0xcf, 0x62,
0x1b, 0x86, 0x22, 0x8f, 0x13, 0xf8, 0x6a, 0x45, 0x9c, 0x6a, 0xaf, 0xc2, 0x86, 0x9f, 0xe6, 0x72, 0xcb, 0xf3, 0x78, 0x1e, 0xe2, 0x3a, 0x72, 0x85, 0x7b, 0xb5, 0x8b, 0xb0, 0xe6, 0x24, 0xb9, 0x2c,
0x3d, 0x8f, 0x30, 0x96, 0xe7, 0xaa, 0x66, 0xb9, 0x32, 0x2c, 0xcb, 0xa5, 0x42, 0x8d, 0x44, 0xee, 0xdb, 0xa6, 0x8c, 0x65, 0xb9, 0xaa, 0x69, 0xae, 0x14, 0x4b, 0x73, 0xc9, 0x50, 0xa3, 0xbe, 0x35,
0x34, 0x24, 0xbe, 0xba, 0xd5, 0x91, 0xba, 0x75, 0x5c, 0x98, 0xa9, 0xe7, 0x96, 0x24, 0x2c, 0xa0, 0xf5, 0xa8, 0x23, 0x6f, 0x74, 0x84, 0x6e, 0x1d, 0xe7, 0xc7, 0xc4, 0x72, 0x47, 0x23, 0xe6, 0x06,
0x91, 0xba, 0xdd, 0x91, 0xba, 0x55, 0x5c, 0x98, 0xa8, 0x0b, 0x8a, 0x1b, 0x86, 0xf4, 0x57, 0xe2, 0xbe, 0xbc, 0xd9, 0x11, 0xba, 0x55, 0x9c, 0x1f, 0x51, 0x17, 0x24, 0xcb, 0xf3, 0x82, 0xdf, 0xa8,
0x3b, 0xd7, 0x64, 0xe1, 0x84, 0x01, 0xe3, 0x6a, 0xad, 0x53, 0xe9, 0xb6, 0x70, 0x3b, 0xc7, 0xcf, 0x43, 0x6e, 0xe8, 0x82, 0x78, 0x2e, 0x8b, 0xe5, 0x5a, 0xa7, 0xd2, 0x6d, 0xe1, 0x76, 0x86, 0x9f,
0xc8, 0xe2, 0x3c, 0x60, 0x1c, 0x1d, 0xc1, 0xee, 0x34, 0xa4, 0xde, 0x35, 0xf1, 0x1d, 0xef, 0xca, 0xd3, 0xc5, 0x85, 0xcb, 0x62, 0x74, 0x0c, 0x3b, 0x53, 0x2f, 0xb0, 0x6f, 0xa8, 0x43, 0xec, 0x6b,
0xe5, 0xd9, 0xd1, 0xba, 0x38, 0xba, 0x93, 0x3b, 0x06, 0x57, 0x2e, 0x17, 0x67, 0x5f, 0x01, 0xcc, 0x2b, 0x4e, 0x5d, 0xeb, 0xdc, 0x75, 0x3b, 0x33, 0x0c, 0xae, 0xad, 0x98, 0xfb, 0xbe, 0x00, 0x98,
0xa3, 0x44, 0xf4, 0x87, 0x24, 0x6a, 0x43, 0x5c, 0x66, 0x05, 0x41, 0x7b, 0xb0, 0x75, 0x99, 0xb8, 0xfb, 0x11, 0xef, 0x0f, 0x8d, 0xe4, 0x06, 0x7f, 0x4c, 0x01, 0x41, 0xbb, 0xb0, 0x71, 0x15, 0x59,
0x11, 0x57, 0xa1, 0x23, 0x75, 0x5b, 0x38, 0x33, 0xd0, 0x6b, 0x50, 0x45, 0x4d, 0x67, 0x96, 0xd0, 0x7e, 0x2c, 0x43, 0x47, 0xe8, 0xb6, 0x70, 0x7a, 0x40, 0x2f, 0x41, 0xe6, 0x77, 0x92, 0x59, 0x14,
0x1b, 0xc7, 0xa3, 0x11, 0x77, 0x3d, 0xce, 0x1c, 0x1a, 0x85, 0x0b, 0xb5, 0x29, 0x72, 0xec, 0x0b, 0xdc, 0x12, 0x3b, 0xf0, 0x63, 0xcb, 0x8e, 0x19, 0x09, 0x7c, 0x6f, 0x21, 0x37, 0x79, 0x8e, 0x3d,
0xff, 0x30, 0xa1, 0x37, 0x83, 0xdc, 0x6b, 0x45, 0xe1, 0x02, 0x7d, 0x0c, 0x0d, 0x37, 0x8e, 0x1c, 0x6e, 0x1f, 0x46, 0xc1, 0xed, 0x20, 0xb3, 0x1a, 0xbe, 0xb7, 0x40, 0x1f, 0x41, 0xc3, 0x0a, 0x7d,
0x4e, 0xe3, 0xc0, 0x53, 0x5b, 0xa2, 0x31, 0x75, 0x37, 0x8e, 0xec, 0xd4, 0xd6, 0x86, 0xd0, 0x58, 0x12, 0x07, 0xa1, 0x6b, 0xcb, 0x2d, 0xde, 0x98, 0xba, 0x15, 0xfa, 0x66, 0x72, 0x46, 0x5f, 0x40,
0x92, 0x83, 0x0e, 0x00, 0x5d, 0x98, 0x67, 0xa6, 0xf5, 0xce, 0x74, 0x6c, 0xeb, 0x4c, 0x37, 0x1d, 0x9b, 0x3f, 0x8f, 0xdc, 0x52, 0x9f, 0x2f, 0x86, 0xbc, 0xc5, 0x73, 0x6d, 0x71, 0x74, 0x94, 0x81,
0xfb, 0xfd, 0x58, 0x57, 0x3e, 0x40, 0x1f, 0x42, 0xa3, 0x3f, 0xce, 0x31, 0x45, 0x42, 0x08, 0xda, 0xe8, 0x7b, 0x38, 0xcc, 0x1b, 0x91, 0x3b, 0x16, 0xea, 0x6c, 0xf3, 0x3a, 0x0f, 0x32, 0x8f, 0x3c,
0x43, 0x03, 0xeb, 0x3f, 0xf4, 0x27, 0x7a, 0x8e, 0xc9, 0xda, 0x5f, 0x32, 0x7c, 0xb1, 0x69, 0x04, 0x28, 0xaf, 0x57, 0x19, 0x42, 0x63, 0xb9, 0x00, 0x68, 0x1f, 0xd0, 0xa5, 0x7e, 0xae, 0x1b, 0x6f,
0x30, 0x61, 0x31, 0x8d, 0x18, 0x49, 0x9b, 0xcd, 0xe6, 0x82, 0x16, 0x31, 0x43, 0x75, 0x5c, 0x98, 0x74, 0x62, 0x1a, 0xe7, 0xaa, 0x4e, 0xcc, 0xb7, 0x63, 0x55, 0xfa, 0x00, 0x6d, 0x41, 0xa3, 0x3f,
0xc8, 0x84, 0x2d, 0x92, 0x24, 0x34, 0x11, 0x83, 0xd0, 0x3e, 0x7e, 0xf3, 0xbc, 0xd9, 0x2a, 0x12, 0xce, 0x30, 0x49, 0x40, 0x08, 0xda, 0x43, 0x0d, 0xab, 0x3f, 0xf6, 0x27, 0x6a, 0x86, 0x89, 0xca,
0xf7, 0xf4, 0x34, 0x56, 0xcc, 0x58, 0x96, 0x06, 0x1d, 0x02, 0x24, 0xe4, 0x97, 0x39, 0x61, 0xbc, 0x3f, 0x22, 0x7c, 0xbe, 0x6e, 0xcd, 0x30, 0x65, 0x61, 0xe0, 0x33, 0x9a, 0x0c, 0x94, 0xcd, 0xf9,
0x98, 0x9b, 0x16, 0x6e, 0xe4, 0x88, 0xe1, 0x6b, 0xbf, 0x49, 0xd0, 0x58, 0xc6, 0xac, 0x3e, 0x5d, 0xe8, 0xf9, 0x9e, 0xd6, 0x71, 0x7e, 0x44, 0x3a, 0x6c, 0xd0, 0x28, 0x0a, 0x22, 0xbe, 0x6c, 0xed,
0xc7, 0xd8, 0xc2, 0xc5, 0xd3, 0xf7, 0x61, 0x77, 0xd4, 0x3f, 0x1f, 0x5a, 0x78, 0xa4, 0x9f, 0x38, 0x93, 0x57, 0xcf, 0xdb, 0xdf, 0x3c, 0x71, 0x4f, 0x4d, 0x62, 0xf9, 0x1e, 0xa7, 0x69, 0xd0, 0x11,
0x23, 0x7d, 0x32, 0xe9, 0x9f, 0xea, 0x8a, 0x84, 0xf6, 0x40, 0xf9, 0x49, 0xc7, 0x13, 0xc3, 0x32, 0x40, 0x44, 0x7f, 0x9d, 0x53, 0x16, 0xe7, 0xbb, 0xd9, 0xc2, 0x8d, 0x0c, 0xd1, 0x1c, 0xe5, 0x77,
0x9d, 0x91, 0x31, 0x19, 0xf5, 0xed, 0xc1, 0x5b, 0x45, 0x46, 0x2f, 0xe1, 0xe0, 0xc2, 0x9c, 0x5c, 0x01, 0x1a, 0xcb, 0x98, 0x62, 0xe9, 0x2a, 0xc6, 0x06, 0xce, 0x4b, 0xdf, 0x83, 0x9d, 0x51, 0xff,
0x8c, 0xc7, 0x16, 0xb6, 0xf5, 0x93, 0xd5, 0x1e, 0x56, 0xd2, 0xa6, 0x19, 0xa6, 0xad, 0x63, 0xb3, 0x62, 0x68, 0xe0, 0x91, 0x7a, 0x4a, 0x46, 0xea, 0x64, 0xd2, 0x3f, 0x53, 0x25, 0x01, 0xed, 0x82,
0x7f, 0x9e, 0x55, 0x50, 0xaa, 0xda, 0x1c, 0xd4, 0x9c, 0xa9, 0x01, 0xf5, 0x49, 0xdf, 0xbf, 0x25, 0xf4, 0xb3, 0x8a, 0x27, 0x9a, 0xa1, 0x93, 0x91, 0x36, 0x19, 0xf5, 0xcd, 0xc1, 0x6b, 0x49, 0x44,
0x09, 0x0f, 0x18, 0xb9, 0x21, 0x11, 0x47, 0xef, 0xe1, 0x60, 0x4d, 0xb5, 0x4e, 0x10, 0xcd, 0xa8, 0x87, 0xb0, 0x7f, 0xa9, 0x4f, 0x2e, 0xc7, 0x63, 0x03, 0x9b, 0xea, 0x69, 0xb1, 0x87, 0x95, 0xa4,
0x2a, 0x75, 0x2a, 0xdd, 0xe6, 0xf1, 0xe7, 0x8f, 0xb7, 0xe7, 0xc7, 0x39, 0x49, 0x16, 0x46, 0x34, 0x69, 0x9a, 0x6e, 0xaa, 0x58, 0xef, 0x5f, 0xa4, 0x37, 0x48, 0x55, 0x65, 0x0e, 0x72, 0xb6, 0x0d,
0xa3, 0x78, 0x2f, 0x7e, 0xe0, 0x4a, 0x51, 0xed, 0x0d, 0xec, 0x97, 0x86, 0xa0, 0x4f, 0xa1, 0x19, 0x83, 0xc0, 0xa1, 0x7d, 0xe7, 0x8e, 0x46, 0xb1, 0xcb, 0x68, 0x32, 0x45, 0xf4, 0x16, 0xf6, 0x57,
0xcf, 0xa7, 0x61, 0xe0, 0xa5, 0xd3, 0xce, 0x44, 0xa1, 0x16, 0x86, 0x0c, 0x3a, 0x23, 0x0b, 0xa6, 0x94, 0x81, 0xb8, 0xfe, 0x2c, 0x90, 0x85, 0x4e, 0xa5, 0xdb, 0x3c, 0xf9, 0xec, 0xf1, 0xf6, 0xfc,
0xfd, 0x2e, 0xc3, 0x47, 0x8f, 0x56, 0x5b, 0x13, 0xa1, 0xb4, 0x2e, 0xc2, 0x12, 0x41, 0xcb, 0xa5, 0x34, 0xa7, 0xd1, 0x42, 0xf3, 0x67, 0x01, 0xde, 0x0d, 0x1f, 0x98, 0x12, 0x54, 0x79, 0x05, 0x7b,
0x82, 0x3e, 0x04, 0xb8, 0xbb, 0x4a, 0x41, 0xde, 0xf2, 0x26, 0xa5, 0xc2, 0xac, 0x96, 0x0a, 0x73, 0xa5, 0x21, 0xe8, 0x13, 0x68, 0x86, 0xf3, 0xa9, 0xe7, 0xda, 0x09, 0xa3, 0x18, 0xbf, 0xa8, 0x85,
0x29, 0xa6, 0xad, 0x55, 0x31, 0x3d, 0x2e, 0xf9, 0x23, 0xd8, 0x65, 0x24, 0xb9, 0x25, 0x89, 0xb3, 0x21, 0x85, 0xce, 0xe9, 0x82, 0x29, 0x7f, 0x88, 0xf0, 0xe1, 0xa3, 0xb7, 0xad, 0x10, 0x5d, 0x58,
0x52, 0xbf, 0x26, 0x62, 0x77, 0x32, 0xc7, 0xb8, 0xb8, 0x85, 0xf6, 0x87, 0x04, 0x87, 0xa5, 0xed, 0x25, 0x7a, 0x89, 0x68, 0x88, 0xa5, 0xa2, 0x71, 0x04, 0xf0, 0xee, 0x29, 0xf9, 0xf0, 0x96, 0x2f,
0x58, 0x4e, 0xfb, 0x6b, 0xa8, 0xfe, 0x57, 0xce, 0x44, 0x40, 0xfa, 0xfe, 0x1b, 0xc2, 0x98, 0x7b, 0x29, 0x25, 0x7f, 0xb5, 0x94, 0xfc, 0x4b, 0xc2, 0x6e, 0x14, 0x09, 0xfb, 0xb8, 0xac, 0x1c, 0xc3,
0x49, 0x8a, 0x1e, 0xb5, 0x70, 0x23, 0x47, 0x0c, 0x7f, 0x55, 0x45, 0x95, 0x7b, 0x2a, 0xd2, 0xfe, 0x0e, 0xa3, 0xd1, 0x1d, 0x8d, 0x48, 0xe1, 0xfe, 0x1a, 0x8f, 0xdd, 0x4e, 0x0d, 0xe3, 0xfc, 0x15,
0x91, 0x41, 0x79, 0x98, 0xfc, 0x39, 0xcc, 0xbc, 0x80, 0x9a, 0x58, 0x5c, 0xcb, 0x6a, 0xdb, 0xa9, 0xca, 0x9f, 0x02, 0x1c, 0x95, 0xb6, 0x63, 0xb9, 0xed, 0x2f, 0xa1, 0xfa, 0x7f, 0x67, 0xc6, 0x03,
0xf9, 0x34, 0x13, 0x25, 0x8c, 0x56, 0x4b, 0x19, 0x55, 0xa1, 0x96, 0xdf, 0x3f, 0xa7, 0xa2, 0x30, 0x92, 0xfa, 0x6f, 0x29, 0x63, 0xd6, 0x15, 0xcd, 0x7b, 0xd4, 0xc2, 0x8d, 0x0c, 0xd1, 0x9c, 0x22,
0xd1, 0x00, 0xaa, 0xe2, 0x9b, 0xb2, 0x2d, 0x74, 0xff, 0xd5, 0xe3, 0x4d, 0x5a, 0x03, 0x84, 0xdc, 0x8b, 0x2a, 0xf7, 0x58, 0xa4, 0xfc, 0x2b, 0x82, 0xf4, 0x30, 0xf9, 0x73, 0x26, 0x73, 0x00, 0x35,
0x45, 0xb0, 0x66, 0xc3, 0x5e, 0x99, 0x17, 0x69, 0xf0, 0xaa, 0x10, 0xf6, 0xf8, 0x62, 0xf2, 0xd6, 0x2e, 0x1a, 0xcb, 0xdb, 0x36, 0x93, 0xe3, 0xd3, 0x93, 0x28, 0x99, 0x68, 0xb5, 0x74, 0xa2, 0x32,
0x31, 0x2d, 0xdb, 0x18, 0x1a, 0x83, 0xbe, 0x9d, 0x6a, 0x37, 0x17, 0x79, 0x13, 0x6a, 0x77, 0xd2, 0xd4, 0xb2, 0xf7, 0x67, 0xa3, 0xc8, 0x8f, 0x68, 0x00, 0x55, 0xfe, 0xdd, 0xda, 0xe4, 0xbc, 0xff,
0x16, 0x86, 0x99, 0xba, 0x15, 0x59, 0x8b, 0xe1, 0xc5, 0xfa, 0xf2, 0x11, 0x1b, 0x04, 0x7d, 0x0b, 0xea, 0xf1, 0x26, 0xad, 0x00, 0x9c, 0xee, 0x3c, 0x58, 0x31, 0x61, 0xb7, 0xcc, 0x8a, 0x14, 0x78,
0xf5, 0x7c, 0x99, 0xb0, 0x9c, 0xde, 0x97, 0x1b, 0x36, 0xd6, 0xf2, 0xec, 0x13, 0xcc, 0x6a, 0x7f, 0x91, 0x13, 0x7b, 0x7c, 0x39, 0x79, 0x4d, 0x74, 0xc3, 0xd4, 0x86, 0xda, 0xa0, 0x6f, 0x26, 0xdc,
0xca, 0x70, 0xb0, 0x5e, 0x32, 0xa6, 0x09, 0xdf, 0xb0, 0x3a, 0xbf, 0xbf, 0xbf, 0x3a, 0x8f, 0x36, 0xcd, 0x48, 0xde, 0x84, 0xda, 0x3b, 0x6a, 0xf3, 0x83, 0x9e, 0x98, 0x25, 0x51, 0x09, 0xe1, 0x60,
0xad, 0xce, 0x34, 0x55, 0xe9, 0xb2, 0xfc, 0x3f, 0x58, 0xd6, 0x7e, 0x7e, 0xce, 0x52, 0xdd, 0x81, 0x55, 0x7c, 0xb8, 0x82, 0xa0, 0x6f, 0xa1, 0x9e, 0x89, 0x09, 0xcb, 0xc6, 0x7b, 0xb8, 0x46, 0xb1,
0xe6, 0x3b, 0x6c, 0x99, 0xa7, 0xab, 0x5f, 0x94, 0x07, 0xcb, 0x51, 0x4e, 0x31, 0xd3, 0xb2, 0x1d, 0x96, 0xbe, 0x4f, 0x4c, 0x56, 0xf9, 0x4b, 0x84, 0xfd, 0xd5, 0x2b, 0xc3, 0x20, 0x8a, 0xd7, 0x48,
0xac, 0x9f, 0x1a, 0x13, 0x5b, 0xc7, 0xfa, 0x89, 0x52, 0x49, 0x17, 0xe6, 0xfa, 0x83, 0x72, 0xa9, 0xe7, 0x0f, 0xf7, 0xa5, 0xf3, 0x78, 0x9d, 0x74, 0x26, 0xa9, 0x4a, 0xc5, 0xf2, 0x7d, 0x4c, 0x59,
0xdd, 0xef, 0xab, 0xf4, 0x50, 0x31, 0xdf, 0x41, 0x2d, 0x11, 0x6f, 0x67, 0xaa, 0x2c, 0xd8, 0xea, 0xf9, 0xe5, 0x39, 0xa2, 0xba, 0x0d, 0xcd, 0x37, 0xd8, 0xd0, 0xcf, 0x8a, 0x5f, 0x94, 0x07, 0xe2,
0x3c, 0xd5, 0x24, 0x5c, 0x04, 0x4c, 0xb7, 0xc5, 0xc9, 0x6f, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x28, 0x26, 0x98, 0x6e, 0x98, 0x04, 0xab, 0x67, 0xda, 0xc4, 0x54, 0xb1, 0x7a, 0x2a, 0x55, 0x12,
0xff, 0x42, 0x7f, 0xee, 0x48, 0x09, 0x00, 0x00, 0xc1, 0x5c, 0x2d, 0x28, 0xa3, 0xda, 0xfd, 0xbe, 0x0a, 0x0f, 0x19, 0xf3, 0x1d, 0xd4, 0x22, 0x5e,
0x3b, 0x93, 0x45, 0x3e, 0xad, 0xce, 0x53, 0x4d, 0xc2, 0x79, 0xc0, 0x74, 0x93, 0x7b, 0x7e, 0xf3,
0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0x07, 0x55, 0xdb, 0xac, 0x09, 0x00, 0x00,
} }

View File

@ -20,6 +20,8 @@ message PushNotificationRegistration {
bytes grant = 10; bytes grant = 10;
bool allow_from_contacts_only = 11; bool allow_from_contacts_only = 11;
string apn_topic = 12; string apn_topic = 12;
bool block_mentions = 13;
repeated bytes allowed_mentions_chat_list = 14;
} }
message PushNotificationRegistrationResponse { message PushNotificationRegistrationResponse {

View File

@ -176,6 +176,10 @@ type Client struct {
registrationSubscriptions []chan struct{} registrationSubscriptions []chan struct{}
} }
type MessagePersistence interface {
MessageByID(string) (*common.Message, error)
}
func New(persistence *Persistence, config *Config, processor *common.MessageProcessor) *Client { func New(persistence *Persistence, config *Config, processor *common.MessageProcessor) *Client {
return &Client{ return &Client{
quit: make(chan struct{}), quit: make(chan struct{}),

View File

@ -16,6 +16,7 @@ import (
coretypes "github.com/status-im/status-go/eth-node/core/types" coretypes "github.com/status-im/status-go/eth-node/core/types"
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
) )
const ( const (
@ -92,7 +93,7 @@ func (t *TransactionValidator) verifyTransactionSignature(ctx context.Context, f
return nil return nil
} }
func (t *TransactionValidator) validateTokenTransfer(parameters *CommandParameters, transaction coretypes.Message) (*VerifyTransactionResponse, error) { func (t *TransactionValidator) validateTokenTransfer(parameters *common.CommandParameters, transaction coretypes.Message) (*VerifyTransactionResponse, error) {
data := transaction.Data() data := transaction.Data()
if len(data) != tokenTransferDataLength { if len(data) != tokenTransferDataLength {
@ -153,7 +154,7 @@ func (t *TransactionValidator) validateToAddress(specifiedTo, actualTo string) b
return t.addresses[actualTo] return t.addresses[actualTo]
} }
func (t *TransactionValidator) validateEthereumTransfer(parameters *CommandParameters, transaction coretypes.Message) (*VerifyTransactionResponse, error) { func (t *TransactionValidator) validateEthereumTransfer(parameters *common.CommandParameters, transaction coretypes.Message) (*VerifyTransactionResponse, error) {
toAddress := strings.ToLower(transaction.To().Hex()) toAddress := strings.ToLower(transaction.To().Hex())
if !t.validateToAddress(parameters.Address, toAddress) { if !t.validateToAddress(parameters.Address, toAddress) {
@ -197,7 +198,7 @@ type VerifyTransactionResponse struct {
// The address the transaction was actually sent // The address the transaction was actually sent
Address string Address string
Message *Message Message *common.Message
Transaction *TransactionToValidate Transaction *TransactionToValidate
} }
@ -205,7 +206,7 @@ type VerifyTransactionResponse struct {
// If a negative response is returned, i.e `Valid` is false, it should // If a negative response is returned, i.e `Valid` is false, it should
// not be retried. // not be retried.
// If an error is returned, validation can be retried. // If an error is returned, validation can be retried.
func (t *TransactionValidator) validateTransaction(ctx context.Context, message coretypes.Message, parameters *CommandParameters, from *ecdsa.PublicKey) (*VerifyTransactionResponse, error) { func (t *TransactionValidator) validateTransaction(ctx context.Context, message coretypes.Message, parameters *common.CommandParameters, from *ecdsa.PublicKey) (*VerifyTransactionResponse, error) {
fromAddress := types.BytesToAddress(message.From().Bytes()) fromAddress := types.BytesToAddress(message.From().Bytes())
err := t.verifyTransactionSignature(ctx, from, fromAddress, parameters.TransactionHash, parameters.Signature) err := t.verifyTransactionSignature(ctx, from, fromAddress, parameters.TransactionHash, parameters.Signature)
@ -268,7 +269,7 @@ func (t *TransactionValidator) ValidateTransactions(ctx context.Context) ([]*Ver
} }
validationResult.Message = message validationResult.Message = message
} else { } else {
commandParameters := &CommandParameters{} commandParameters := &common.CommandParameters{}
commandParameters.TransactionHash = transaction.TransactionHash commandParameters.TransactionHash = transaction.TransactionHash
commandParameters.Signature = transaction.Signature commandParameters.Signature = transaction.Signature
@ -304,7 +305,7 @@ func (t *TransactionValidator) ValidateTransactions(ctx context.Context) ([]*Ver
return response, nil return response, nil
} }
func (t *TransactionValidator) ValidateTransaction(ctx context.Context, parameters *CommandParameters, from *ecdsa.PublicKey) (*VerifyTransactionResponse, error) { func (t *TransactionValidator) ValidateTransaction(ctx context.Context, parameters *common.CommandParameters, from *ecdsa.PublicKey) (*VerifyTransactionResponse, error) {
t.logger.Debug("validating transaction", zap.Any("transaction", parameters), zap.Any("from", from)) t.logger.Debug("validating transaction", zap.Any("transaction", parameters), zap.Any("from", from))
hash := parameters.TransactionHash hash := parameters.TransactionHash
c, cancel := context.WithTimeout(ctx, 10*time.Second) c, cancel := context.WithTimeout(ctx, 10*time.Second)

View File

@ -14,6 +14,7 @@ import (
coretypes "github.com/status-im/status-go/eth-node/core/types" coretypes "github.com/status-im/status-go/eth-node/core/types"
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/protocol/tt"
) )
@ -105,7 +106,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
Transaction coretypes.Message Transaction coretypes.Message
OverrideSignatureChatKey *ecdsa.PublicKey OverrideSignatureChatKey *ecdsa.PublicKey
OverrideTransactionHash string OverrideTransactionHash string
Parameters *CommandParameters Parameters *common.CommandParameters
WalletKey *ecdsa.PrivateKey WalletKey *ecdsa.PrivateKey
From *ecdsa.PublicKey From *ecdsa.PublicKey
}{ }{
@ -123,7 +124,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
}, },
WalletKey: senderWalletKey, WalletKey: senderWalletKey,
@ -143,7 +144,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
}, },
@ -162,7 +163,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
}, },
@ -182,7 +183,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
}, },
@ -202,7 +203,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
false, false,
), ),
OverrideTransactionHash: "0xdd9202df5e2f3611b5b6b716aef2a3543cc0bdd7506f50926e0869b83c8383b9", OverrideTransactionHash: "0xdd9202df5e2f3611b5b6b716aef2a3543cc0bdd7506f50926e0869b83c8383b9",
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
}, },
WalletKey: senderWalletKey, WalletKey: senderWalletKey,
@ -221,7 +222,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
Address: strings.ToLower(myAddress2.Hex()), Address: strings.ToLower(myAddress2.Hex()),
}, },
@ -240,7 +241,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
}, },
WalletKey: senderWalletKey, WalletKey: senderWalletKey,
@ -259,7 +260,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
nil, nil,
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Value: "23", Value: "23",
}, },
WalletKey: senderWalletKey, WalletKey: senderWalletKey,
@ -279,7 +280,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress1, big.NewInt(int64(23))), buildData(transferFunction, myAddress1, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Value: "23", Value: "23",
}, },
@ -300,7 +301,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress1, big.NewInt(int64(23))), buildData(transferFunction, myAddress1, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
Value: "23", Value: "23",
@ -322,7 +323,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress1, big.NewInt(int64(13))), buildData(transferFunction, myAddress1, big.NewInt(int64(13))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Value: "23", Value: "23",
}, },
@ -341,7 +342,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress1, big.NewInt(int64(23))), buildData(transferFunction, myAddress1, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
Value: "23", Value: "23",
@ -362,7 +363,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress1, big.NewInt(int64(23))), buildData(transferFunction, myAddress1, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Address: strings.ToLower(senderAddress.Hex()), Address: strings.ToLower(senderAddress.Hex()),
Value: "23", Value: "23",
@ -383,7 +384,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(transferFunction, myAddress2, big.NewInt(int64(23))), buildData(transferFunction, myAddress2, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Address: strings.ToLower(myAddress1.Hex()), Address: strings.ToLower(myAddress1.Hex()),
Value: "23", Value: "23",
@ -403,7 +404,7 @@ func (s *TransactionValidatorSuite) TestValidateTransactions() {
buildData(notTransferFunction, myAddress1, big.NewInt(int64(23))), buildData(notTransferFunction, myAddress1, big.NewInt(int64(23))),
false, false,
), ),
Parameters: &CommandParameters{ Parameters: &common.CommandParameters{
Contract: contractString, Contract: contractString,
Value: "23", Value: "23",
}, },

View File

@ -16,6 +16,7 @@ import (
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/mailserver" "github.com/status-im/status-go/mailserver"
"github.com/status-im/status-go/protocol" "github.com/status-im/status-go/protocol"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/encryption/multidevice" "github.com/status-im/status-go/protocol/encryption/multidevice"
"github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/pushnotificationclient" "github.com/status-im/status-go/protocol/pushnotificationclient"
@ -315,8 +316,8 @@ func (api *PublicAPI) SetInstallationMetadata(installationID string, data *multi
} }
type ApplicationMessagesResponse struct { type ApplicationMessagesResponse struct {
Messages []*protocol.Message `json:"messages"` Messages []*common.Message `json:"messages"`
Cursor string `json:"cursor"` Cursor string `json:"cursor"`
} }
func (api *PublicAPI) ChatMessages(chatID, cursor string, limit int) (*ApplicationMessagesResponse, error) { func (api *PublicAPI) ChatMessages(chatID, cursor string, limit int) (*ApplicationMessagesResponse, error) {
@ -355,7 +356,7 @@ func (api *PublicAPI) UpdateMessageOutgoingStatus(id, newOutgoingStatus string)
return api.service.messenger.UpdateMessageOutgoingStatus(id, newOutgoingStatus) return api.service.messenger.UpdateMessageOutgoingStatus(id, newOutgoingStatus)
} }
func (api *PublicAPI) SendChatMessage(ctx context.Context, message *protocol.Message) (*protocol.MessengerResponse, error) { func (api *PublicAPI) SendChatMessage(ctx context.Context, message *common.Message) (*protocol.MessengerResponse, error) {
return api.service.messenger.SendChatMessage(ctx, message) return api.service.messenger.SendChatMessage(ctx, message)
} }

View File

@ -4,6 +4,7 @@ package shhext
import ( import (
"context" "context"
"github.com/status-im/status-go/protocol/common"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
@ -465,8 +466,8 @@ func (api *NimbusPublicAPI) VerifyENSNames(details []enstypes.ENSDetails) (map[s
} }
type ApplicationMessagesResponse struct { type ApplicationMessagesResponse struct {
Messages []*protocol.Message `json:"messages"` Messages []*common.Message `json:"messages"`
Cursor string `json:"cursor"` Cursor string `json:"cursor"`
} }
func (api *NimbusPublicAPI) ChatMessages(chatID, cursor string, limit int) (*ApplicationMessagesResponse, error) { func (api *NimbusPublicAPI) ChatMessages(chatID, cursor string, limit int) (*ApplicationMessagesResponse, error) {
@ -501,7 +502,7 @@ func (api *PublicAPI) StartMessenger() error {
return api.service.StartMessenger() return api.service.StartMessenger()
} }
func (api *NimbusPublicAPI) SendChatMessage(ctx context.Context, message *protocol.Message) (*protocol.MessengerResponse, error) { func (api *NimbusPublicAPI) SendChatMessage(ctx context.Context, message *common.Message) (*protocol.MessengerResponse, error) {
return api.service.messenger.SendChatMessage(ctx, message) return api.service.messenger.SendChatMessage(ctx, message)
} }