feat_: Send payment request data (#6137)
This commit is contained in:
parent
0f2ae8fbab
commit
4aa683f03d
|
@ -283,6 +283,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
||||||
ContactVerificationState ContactVerificationState `json:"contactVerificationState,omitempty"`
|
ContactVerificationState ContactVerificationState `json:"contactVerificationState,omitempty"`
|
||||||
DiscordMessage *protobuf.DiscordMessage `json:"discordMessage,omitempty"`
|
DiscordMessage *protobuf.DiscordMessage `json:"discordMessage,omitempty"`
|
||||||
BridgeMessage *protobuf.BridgeMessage `json:"bridgeMessage,omitempty"`
|
BridgeMessage *protobuf.BridgeMessage `json:"bridgeMessage,omitempty"`
|
||||||
|
PaymentRequests []*protobuf.PaymentRequest `json:"paymentRequests,omitempty"`
|
||||||
}
|
}
|
||||||
item := MessageStructType{
|
item := MessageStructType{
|
||||||
ID: m.ID,
|
ID: m.ID,
|
||||||
|
@ -325,6 +326,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
||||||
DeletedForMe: m.DeletedForMe,
|
DeletedForMe: m.DeletedForMe,
|
||||||
ContactRequestState: m.ContactRequestState,
|
ContactRequestState: m.ContactRequestState,
|
||||||
ContactVerificationState: m.ContactVerificationState,
|
ContactVerificationState: m.ContactVerificationState,
|
||||||
|
PaymentRequests: m.PaymentRequests,
|
||||||
}
|
}
|
||||||
|
|
||||||
if sticker := m.GetSticker(); sticker != nil {
|
if sticker := m.GetSticker(); sticker != nil {
|
||||||
|
@ -383,6 +385,7 @@ func (m *Message) UnmarshalJSON(data []byte) error {
|
||||||
ImageHeight uint32 `json:"imageHeight"`
|
ImageHeight uint32 `json:"imageHeight"`
|
||||||
AlbumImagesCount uint32 `json:"albumImagesCount"`
|
AlbumImagesCount uint32 `json:"albumImagesCount"`
|
||||||
From string `json:"from"`
|
From string `json:"from"`
|
||||||
|
PaymentRequestList []*protobuf.PaymentRequest `json:"paymentRequests"`
|
||||||
Deleted bool `json:"deleted,omitempty"`
|
Deleted bool `json:"deleted,omitempty"`
|
||||||
DeletedForMe bool `json:"deletedForMe,omitempty"`
|
DeletedForMe bool `json:"deletedForMe,omitempty"`
|
||||||
}{
|
}{
|
||||||
|
@ -410,6 +413,7 @@ func (m *Message) UnmarshalJSON(data []byte) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.PaymentRequests = aux.PaymentRequestList
|
||||||
m.ResponseTo = aux.ResponseTo
|
m.ResponseTo = aux.ResponseTo
|
||||||
m.EnsName = aux.EnsName
|
m.EnsName = aux.EnsName
|
||||||
m.DisplayName = aux.DisplayName
|
m.DisplayName = aux.DisplayName
|
||||||
|
|
|
@ -640,10 +640,10 @@ func assertMarshalAndUnmarshalJSON[T any](t *testing.T, obj *T, msgAndArgs ...an
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMarshalMessageJSON(t *testing.T) {
|
func TestMarshalMessageJSON(t *testing.T) {
|
||||||
msg := &Message{
|
msg := NewMessage()
|
||||||
ID: "1",
|
msg.ID = "1"
|
||||||
From: "0x04c51631b3354242d5a56f044c3b7703bcc001e8c725c4706928b3fac3c2a12ec9019e1e224d487f5c893389405bcec998bc687307f290a569d6a97d24b711bca8",
|
msg.From = "0x04c51631b3354242d5a56f044c3b7703bcc001e8c725c4706928b3fac3c2a12ec9019e1e224d487f5c893389405bcec998bc687307f290a569d6a97d24b711bca8"
|
||||||
LinkPreviews: []LinkPreview{
|
msg.LinkPreviews = []LinkPreview{
|
||||||
{
|
{
|
||||||
Type: protobuf.UnfurledLink_LINK,
|
Type: protobuf.UnfurledLink_LINK,
|
||||||
Description: "GitHub is where people build software.",
|
Description: "GitHub is where people build software.",
|
||||||
|
@ -657,6 +657,13 @@ func TestMarshalMessageJSON(t *testing.T) {
|
||||||
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
DataURI: "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
}
|
||||||
|
msg.PaymentRequests = []*protobuf.PaymentRequest{
|
||||||
|
{
|
||||||
|
Amount: "1000000000000000000",
|
||||||
|
Receiver: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8882",
|
||||||
|
Symbol: "ETH",
|
||||||
|
ChainId: 1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,8 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
|
||||||
contact_verification_status,
|
contact_verification_status,
|
||||||
mentioned,
|
mentioned,
|
||||||
replied,
|
replied,
|
||||||
discord_message_id`
|
discord_message_id,
|
||||||
|
payment_requests`
|
||||||
}
|
}
|
||||||
|
|
||||||
// keep the same order as in tableUserMessagesScanAllFields
|
// keep the same order as in tableUserMessagesScanAllFields
|
||||||
|
@ -148,6 +149,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
|
||||||
m1.links,
|
m1.links,
|
||||||
m1.unfurled_links,
|
m1.unfurled_links,
|
||||||
m1.unfurled_status_links,
|
m1.unfurled_status_links,
|
||||||
|
m1.payment_requests,
|
||||||
m1.command_id,
|
m1.command_id,
|
||||||
m1.command_value,
|
m1.command_value,
|
||||||
m1.command_from,
|
m1.command_from,
|
||||||
|
@ -243,6 +245,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
var serializedLinks []byte
|
var serializedLinks []byte
|
||||||
var serializedUnfurledLinks []byte
|
var serializedUnfurledLinks []byte
|
||||||
var serializedUnfurledStatusLinks []byte
|
var serializedUnfurledStatusLinks []byte
|
||||||
|
var serializedPaymentRequests []byte
|
||||||
var alias sql.NullString
|
var alias sql.NullString
|
||||||
var identicon sql.NullString
|
var identicon sql.NullString
|
||||||
var communityID sql.NullString
|
var communityID sql.NullString
|
||||||
|
@ -303,6 +306,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
&serializedLinks,
|
&serializedLinks,
|
||||||
&serializedUnfurledLinks,
|
&serializedUnfurledLinks,
|
||||||
&serializedUnfurledStatusLinks,
|
&serializedUnfurledStatusLinks,
|
||||||
|
&serializedPaymentRequests,
|
||||||
&command.ID,
|
&command.ID,
|
||||||
&command.Value,
|
&command.Value,
|
||||||
&command.From,
|
&command.From,
|
||||||
|
@ -474,6 +478,13 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
||||||
message.UnfurledStatusLinks = &links
|
message.UnfurledStatusLinks = &links
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if serializedPaymentRequests != nil {
|
||||||
|
err := json.Unmarshal(serializedPaymentRequests, &message.PaymentRequests)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if attachment.Id != "" {
|
if attachment.Id != "" {
|
||||||
discordMessage.Attachments = append(discordMessage.Attachments, attachment)
|
discordMessage.Attachments = append(discordMessage.Attachments, attachment)
|
||||||
}
|
}
|
||||||
|
@ -581,6 +592,14 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var serializedPaymentRequests []byte
|
||||||
|
if len(message.PaymentRequests) != 0 {
|
||||||
|
serializedPaymentRequests, err = json.Marshal(message.PaymentRequests)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return []interface{}{
|
return []interface{}{
|
||||||
message.ID,
|
message.ID,
|
||||||
message.WhisperTimestamp,
|
message.WhisperTimestamp,
|
||||||
|
@ -638,6 +657,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
|
||||||
message.Mentioned,
|
message.Mentioned,
|
||||||
message.Replied,
|
message.Replied,
|
||||||
discordMessage.Id,
|
discordMessage.Id,
|
||||||
|
serializedPaymentRequests,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE user_messages ADD COLUMN payment_requests BLOB;
|
|
@ -2128,3 +2128,45 @@ func TestGetCommunityMemberMessages(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Len(t, messages, 2)
|
require.Len(t, messages, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPaymentRequestMessages(t *testing.T) {
|
||||||
|
db, err := openTestDB()
|
||||||
|
require.NoError(t, err)
|
||||||
|
p := newSQLitePersistence(db)
|
||||||
|
chatID := testPublicChatID
|
||||||
|
var messages []*common.Message
|
||||||
|
|
||||||
|
message := common.Message{
|
||||||
|
ID: strconv.Itoa(1),
|
||||||
|
LocalChatID: chatID,
|
||||||
|
ChatMessage: &protobuf.ChatMessage{
|
||||||
|
Clock: uint64(1),
|
||||||
|
},
|
||||||
|
From: testPK,
|
||||||
|
}
|
||||||
|
message.PaymentRequests = []*protobuf.PaymentRequest{
|
||||||
|
{
|
||||||
|
Amount: "1.123",
|
||||||
|
Symbol: "ETH",
|
||||||
|
Receiver: "0x123",
|
||||||
|
ChainId: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Amount: "1.124",
|
||||||
|
Symbol: "DAI",
|
||||||
|
Receiver: "0x124",
|
||||||
|
ChainId: 11,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
messages = append(messages, &message)
|
||||||
|
|
||||||
|
err = p.SaveMessages(messages)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
m, _, err := p.MessageByChatID(testPublicChatID, "", 10)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, m, 1)
|
||||||
|
|
||||||
|
require.Equal(t, m[0].PaymentRequests, message.PaymentRequests)
|
||||||
|
}
|
||||||
|
|
|
@ -119,6 +119,13 @@ message BridgeMessage {
|
||||||
string parentMessageID = 7;
|
string parentMessageID = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message PaymentRequest {
|
||||||
|
string receiver = 1;
|
||||||
|
string symbol = 2;
|
||||||
|
string amount = 3;
|
||||||
|
uint32 chainId = 4;
|
||||||
|
}
|
||||||
|
|
||||||
message UnfurledLinkThumbnail {
|
message UnfurledLinkThumbnail {
|
||||||
bytes payload = 1;
|
bytes payload = 1;
|
||||||
uint32 width = 2;
|
uint32 width = 2;
|
||||||
|
@ -234,6 +241,8 @@ message ChatMessage {
|
||||||
|
|
||||||
uint32 customization_color = 19;
|
uint32 customization_color = 19;
|
||||||
|
|
||||||
|
repeated PaymentRequest payment_requests = 20;
|
||||||
|
|
||||||
enum ContentType {
|
enum ContentType {
|
||||||
UNKNOWN_CONTENT_TYPE = 0;
|
UNKNOWN_CONTENT_TYPE = 0;
|
||||||
TEXT_PLAIN = 1;
|
TEXT_PLAIN = 1;
|
||||||
|
|
Loading…
Reference in New Issue