Add support for images
This commit adds support for images in protobuf messages. The client can specify a path which will be used to load the image and set the corresponding fields. This makes the assumption that the RCP server runs on the same machine as the client and they have access to the same files. This holds currently for both status-react and status-console-client, we could revisit and adds an upload if that changes in the future.
This commit is contained in:
parent
3e312cb167
commit
f5ab58b87f
Binary file not shown.
After Width: | Height: | Size: 107 B |
|
@ -100,7 +100,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x44, 0xcf, 0x76, 0x71, 0x1f, 0x5e, 0x9a, 0x43, 0xd8, 0xcd, 0xb8, 0xc3, 0x70, 0xc3, 0x7f, 0xfc, 0x90, 0xb4, 0x25, 0x1e, 0xf4, 0x66, 0x20, 0xb8, 0x33, 0x7e, 0xb0, 0x76, 0x1f, 0xc, 0xc0, 0x75}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x90, 0x5a, 0x59, 0x3e, 0x3, 0xe2, 0x3c, 0x81, 0x42, 0xcd, 0x4c, 0x9a, 0xe8, 0xda, 0x93, 0x2b, 0x70, 0xa4, 0xd5, 0x29, 0x3e, 0xd5, 0xc9, 0x27, 0xb6, 0xb7, 0x65, 0xff, 0x0, 0xcb, 0xde}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xa4, 0xeb, 0xa0, 0xe6, 0xa0, 0xd4, 0x48, 0xbb, 0xad, 0x6f, 0x7d, 0x67, 0x8c, 0xbd, 0x25, 0xde, 0x1f, 0x73, 0x9a, 0xbb, 0xa8, 0xc9, 0x30, 0xb7, 0xa9, 0x7c, 0xaf, 0xb5, 0x1, 0x61, 0xdd}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x8e, 0xbf, 0x6f, 0xa, 0xc0, 0xe1, 0x3c, 0x42, 0x28, 0x88, 0x1d, 0xdb, 0xba, 0x1c, 0x83, 0xec, 0xba, 0xd3, 0x5f, 0x5c, 0x77, 0x5e, 0xa7, 0x46, 0x36, 0xec, 0x69, 0xa, 0x4b, 0x17, 0x79}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ func _1540715431_add_versionDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9, 0x4, 0xe3, 0x76, 0x2e, 0xb8, 0x9, 0x23, 0xf0, 0x70, 0x93, 0xc4, 0x50, 0xe, 0x9d, 0x84, 0x22, 0x8c, 0x94, 0xd3, 0x24, 0x9, 0x9a, 0xc1, 0xa1, 0x48, 0x45, 0xfd, 0x40, 0x6e, 0xe6}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ func _1540715431_add_versionUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc7, 0x4c, 0x36, 0x96, 0xdf, 0x16, 0x10, 0xa6, 0x27, 0x1a, 0x79, 0x8b, 0x42, 0x83, 0x23, 0xc, 0x7e, 0xb6, 0x3d, 0x2, 0xda, 0xa4, 0xb4, 0xd, 0x27, 0x55, 0xba, 0xdc, 0xb2, 0x88, 0x8f, 0xa6}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xfd, 0xe6, 0xd8, 0xca, 0x3b, 0x38, 0x18, 0xee, 0x0, 0x5f, 0x36, 0x9e, 0x1e, 0xd, 0x19, 0x3e, 0xb4, 0x73, 0x53, 0xe9, 0xa5, 0xac, 0xdd, 0xa1, 0x2f, 0xc7, 0x6c, 0xa8, 0xd9, 0xa, 0x88}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x18, 0x26, 0xb8, 0x88, 0x47, 0xdb, 0x83, 0xcc, 0xb6, 0x9d, 0x1c, 0x1, 0xae, 0x2f, 0xde, 0x97, 0x82, 0x3, 0x30, 0xa8, 0x63, 0xa1, 0x78, 0x4b, 0xa5, 0x9, 0x8, 0x75, 0xa2, 0x57, 0x81}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -260,7 +260,7 @@ func _1558084410_add_secretDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xb, 0x65, 0xdf, 0x59, 0xbf, 0xe9, 0x5, 0x5b, 0x6f, 0xd5, 0x3a, 0xb7, 0x57, 0xe8, 0x78, 0x38, 0x73, 0x53, 0x57, 0xf7, 0x24, 0x4, 0xe4, 0xa2, 0x49, 0x22, 0xa2, 0xc6, 0xfd, 0x80, 0xa4}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -280,7 +280,7 @@ func _1558084410_add_secretUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x32, 0x36, 0x8e, 0x47, 0xb0, 0x8f, 0xc1, 0xc6, 0xf7, 0xc6, 0x9f, 0x2d, 0x44, 0x75, 0x2b, 0x26, 0xec, 0x6, 0xa0, 0x7b, 0xa5, 0xbd, 0xc8, 0x76, 0x8a, 0x82, 0x68, 0x2, 0x42, 0xb5, 0xf4}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -300,7 +300,7 @@ func _1558588866_add_versionDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x52, 0x34, 0x3c, 0x46, 0x4a, 0xf0, 0x72, 0x47, 0x6f, 0x49, 0x5c, 0xc7, 0xf9, 0x32, 0xce, 0xc4, 0x3d, 0xfd, 0x61, 0xa1, 0x8b, 0x8f, 0xf2, 0x31, 0x34, 0xde, 0x15, 0x49, 0xa6, 0xde, 0xb9}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -320,7 +320,7 @@ func _1558588866_add_versionUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0xea, 0x64, 0x39, 0x61, 0x20, 0x83, 0x83, 0xb, 0x2e, 0x79, 0x64, 0xb, 0x53, 0xfa, 0xfe, 0xc6, 0xf7, 0x67, 0x42, 0xd3, 0x4f, 0xdc, 0x7e, 0x30, 0x32, 0xe8, 0x14, 0x41, 0xe9, 0xe7, 0x3b}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -340,7 +340,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x64, 0x6d, 0xce, 0x24, 0x42, 0x20, 0x8d, 0x4f, 0x37, 0xaa, 0x9d, 0xc, 0x57, 0x98, 0xc1, 0xd1, 0x1a, 0x34, 0xcd, 0x9f, 0x8f, 0x34, 0x86, 0xb3, 0xd3, 0xdc, 0xf1, 0x7d, 0xe5, 0x1b, 0x6e}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -360,7 +360,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x16, 0xf6, 0xc2, 0x62, 0x9c, 0xd2, 0xc9, 0x1e, 0xd8, 0xea, 0xaa, 0xea, 0x95, 0x8f, 0x89, 0x6a, 0x85, 0x5d, 0x9d, 0x99, 0x78, 0x3c, 0x90, 0x66, 0x99, 0x3e, 0x4b, 0x19, 0x62, 0xfb, 0x31, 0x4d}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xde, 0x3f, 0xd2, 0x4a, 0x50, 0x98, 0x56, 0xe3, 0xc0, 0xcd, 0x9d, 0xb0, 0x34, 0x3b, 0xe5, 0x62, 0x18, 0xb5, 0x20, 0xc9, 0x3e, 0xdc, 0x6a, 0x40, 0x36, 0x66, 0xea, 0x51, 0x8c, 0x71, 0xf5}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x71, 0x8f, 0x29, 0xb1, 0xaa, 0xd6, 0xd1, 0x8c, 0x17, 0xef, 0x6c, 0xd5, 0x80, 0xb8, 0x2c, 0xc3, 0xfe, 0xec, 0x24, 0x4d, 0xc8, 0x25, 0xd3, 0xb4, 0xcd, 0xa9, 0xac, 0x63, 0x61, 0xb2, 0x9c}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -420,7 +420,7 @@ func docGo() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1581443166, 0)}
|
||||
info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}}
|
||||
return a, nil
|
||||
}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
package images
|
||||
|
||||
import (
|
||||
"github.com/status-im/status-go/protocol/protobuf"
|
||||
)
|
||||
|
||||
func jpeg(buf []byte) bool {
|
||||
return len(buf) > 2 &&
|
||||
buf[0] == 0xFF &&
|
||||
buf[1] == 0xD8 &&
|
||||
buf[2] == 0xFF
|
||||
}
|
||||
|
||||
func png(buf []byte) bool {
|
||||
return len(buf) > 3 &&
|
||||
buf[0] == 0x89 && buf[1] == 0x50 &&
|
||||
buf[2] == 0x4E && buf[3] == 0x47
|
||||
}
|
||||
|
||||
func gif(buf []byte) bool {
|
||||
return len(buf) > 2 &&
|
||||
buf[0] == 0x47 && buf[1] == 0x49 && buf[2] == 0x46
|
||||
}
|
||||
|
||||
func webp(buf []byte) bool {
|
||||
return len(buf) > 11 &&
|
||||
buf[8] == 0x57 && buf[9] == 0x45 &&
|
||||
buf[10] == 0x42 && buf[11] == 0x50
|
||||
}
|
||||
|
||||
func ImageType(buf []byte) protobuf.ImageMessage_ImageType {
|
||||
if jpeg(buf) {
|
||||
return protobuf.ImageMessage_JPEG
|
||||
} else if png(buf) {
|
||||
return protobuf.ImageMessage_PNG
|
||||
} else if gif(buf) {
|
||||
return protobuf.ImageMessage_GIF
|
||||
} else if webp(buf) {
|
||||
return protobuf.ImageMessage_WEBP
|
||||
}
|
||||
|
||||
return protobuf.ImageMessage_UNKNOWN_IMAGE_TYPE
|
||||
}
|
|
@ -2,7 +2,10 @@ package protocol
|
|||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"unicode"
|
||||
"unicode/utf8"
|
||||
|
@ -93,6 +96,10 @@ type Message struct {
|
|||
ParsedText []byte `json:"parsedText"`
|
||||
// LineCount is the count of newlines in the message
|
||||
LineCount int `json:"lineCount"`
|
||||
// Base64Image is the converted base64 image
|
||||
Base64Image string `json:"image,omitempty"`
|
||||
// ImagePath is the path of the image to be sent
|
||||
ImagePath string `json:"imagePath,omitempty"`
|
||||
|
||||
// Replace indicates that this is a replacement of a message
|
||||
// that has been updated
|
||||
|
@ -138,6 +145,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
|||
Replace string `json:"replace"`
|
||||
ResponseTo string `json:"responseTo"`
|
||||
EnsName string `json:"ensName"`
|
||||
Image string `json:"image,omitempty"`
|
||||
Sticker *StickerAlias `json:"sticker"`
|
||||
CommandParameters *CommandParameters `json:"commandParameters"`
|
||||
Timestamp uint64 `json:"timestamp"`
|
||||
|
@ -162,6 +170,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
|
|||
Clock: m.Clock,
|
||||
ResponseTo: m.ResponseTo,
|
||||
EnsName: m.EnsName,
|
||||
Image: m.Base64Image,
|
||||
Timestamp: m.Timestamp,
|
||||
ContentType: m.ContentType,
|
||||
MessageType: m.MessageType,
|
||||
|
@ -211,6 +220,45 @@ func isRTL(s string) bool {
|
|||
first == '\u200f'
|
||||
}
|
||||
|
||||
// parseImage check the message contains an image, and if so
|
||||
// it creates the a base64 encoded version of it.
|
||||
func (m *Message) parseImage() error {
|
||||
if m.ContentType != protobuf.ChatMessage_IMAGE {
|
||||
return nil
|
||||
}
|
||||
image := m.GetImage()
|
||||
if image == nil {
|
||||
return errors.New("image empty")
|
||||
}
|
||||
|
||||
payload := image.Payload
|
||||
|
||||
e64 := base64.StdEncoding
|
||||
|
||||
maxEncLen := e64.EncodedLen(len(payload))
|
||||
encBuf := make([]byte, maxEncLen)
|
||||
|
||||
e64.Encode(encBuf, payload)
|
||||
var mime string
|
||||
|
||||
switch image.Type {
|
||||
case protobuf.ImageMessage_PNG:
|
||||
mime = "png"
|
||||
case protobuf.ImageMessage_JPEG:
|
||||
mime = "jpeg"
|
||||
case protobuf.ImageMessage_WEBP:
|
||||
mime = "webp"
|
||||
case protobuf.ImageMessage_GIF:
|
||||
mime = "gif"
|
||||
default:
|
||||
return errors.New("image format not supported")
|
||||
}
|
||||
|
||||
m.Base64Image = fmt.Sprintf("data:image/%s;base64,%s", mime, encBuf)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PrepareContent return the parsed content of the message, the line-count and whether
|
||||
// is a right-to-left message
|
||||
func (m *Message) PrepareContent() error {
|
||||
|
@ -222,5 +270,5 @@ func (m *Message) PrepareContent() error {
|
|||
m.ParsedText = jsonParsedText
|
||||
m.LineCount = strings.Count(m.Text, "\n")
|
||||
m.RTL = isRTL(m.Text)
|
||||
return nil
|
||||
return m.parseImage()
|
||||
}
|
||||
|
|
|
@ -33,6 +33,9 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
|
|||
parsed_text,
|
||||
sticker_pack,
|
||||
sticker_hash,
|
||||
image_payload,
|
||||
image_type,
|
||||
image_base64,
|
||||
command_id,
|
||||
command_value,
|
||||
command_from,
|
||||
|
@ -64,6 +67,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
|
|||
m1.parsed_text,
|
||||
m1.sticker_pack,
|
||||
m1.sticker_hash,
|
||||
m1.image_base64,
|
||||
m1.command_id,
|
||||
m1.command_value,
|
||||
m1.command_from,
|
||||
|
@ -116,6 +120,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
|
|||
&message.ParsedText,
|
||||
&sticker.Pack,
|
||||
&sticker.Hash,
|
||||
&message.Base64Image,
|
||||
&command.ID,
|
||||
&command.Value,
|
||||
&command.From,
|
||||
|
@ -162,6 +167,12 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *Message) ([]inte
|
|||
if sticker == nil {
|
||||
sticker = &protobuf.StickerMessage{}
|
||||
}
|
||||
|
||||
image := message.GetImage()
|
||||
if image == nil {
|
||||
image = &protobuf.ImageMessage{}
|
||||
}
|
||||
|
||||
command := message.CommandParameters
|
||||
if command == nil {
|
||||
command = &CommandParameters{}
|
||||
|
@ -183,6 +194,9 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *Message) ([]inte
|
|||
message.ParsedText,
|
||||
sticker.Pack,
|
||||
sticker.Hash,
|
||||
image.Payload,
|
||||
image.Type,
|
||||
message.Base64Image,
|
||||
command.ID,
|
||||
command.Value,
|
||||
command.From,
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package protocol
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/status-im/status-go/protocol/protobuf"
|
||||
)
|
||||
|
||||
const expectedJPEG = "data:image/jpeg;base64,/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k="
|
||||
|
||||
func TestPrepareContentImage(t *testing.T) {
|
||||
file, err := os.Open("../_assets/tests/test.jpg")
|
||||
require.NoError(t, err)
|
||||
defer file.Close()
|
||||
|
||||
payload, err := ioutil.ReadAll(file)
|
||||
require.NoError(t, err)
|
||||
|
||||
message := &Message{}
|
||||
message.ContentType = protobuf.ChatMessage_IMAGE
|
||||
image := protobuf.ImageMessage{
|
||||
Payload: payload,
|
||||
Type: protobuf.ImageMessage_JPEG,
|
||||
}
|
||||
message.Payload = &protobuf.ChatMessage_Image{Image: &image}
|
||||
|
||||
require.NoError(t, message.PrepareContent())
|
||||
require.Equal(t, message.Base64Image, expectedJPEG)
|
||||
}
|
|
@ -191,5 +191,23 @@ func ValidateReceivedChatMessage(message *protobuf.ChatMessage, whisperTimestamp
|
|||
return errors.New("sticker hash not set")
|
||||
}
|
||||
}
|
||||
|
||||
if message.ContentType == protobuf.ChatMessage_IMAGE {
|
||||
if message.Payload == nil {
|
||||
return errors.New("no image content")
|
||||
}
|
||||
image := message.GetImage()
|
||||
if image == nil {
|
||||
return errors.New("no image content")
|
||||
}
|
||||
if len(image.Payload) == 0 {
|
||||
return errors.New("image payload empty")
|
||||
}
|
||||
|
||||
if image.Type == protobuf.ImageMessage_UNKNOWN_IMAGE_TYPE {
|
||||
return errors.New("image type unknown")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -340,6 +340,68 @@ func (s *MessageValidatorSuite) TestValidatePlainTextMessage() {
|
|||
ContentType: protobuf.ChatMessage_STICKER,
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Valid image message",
|
||||
WhisperTimestamp: 2,
|
||||
Valid: true,
|
||||
Message: protobuf.ChatMessage{
|
||||
ChatId: "a",
|
||||
Text: "valid",
|
||||
Clock: 2,
|
||||
Timestamp: 3,
|
||||
ResponseTo: "",
|
||||
EnsName: "",
|
||||
Payload: &protobuf.ChatMessage_Image{
|
||||
Image: &protobuf.ImageMessage{
|
||||
Type: 1,
|
||||
Payload: []byte("some-payload"),
|
||||
},
|
||||
},
|
||||
MessageType: protobuf.ChatMessage_ONE_TO_ONE,
|
||||
ContentType: protobuf.ChatMessage_IMAGE,
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Invalid image message, type unknown",
|
||||
WhisperTimestamp: 2,
|
||||
Valid: false,
|
||||
Message: protobuf.ChatMessage{
|
||||
ChatId: "a",
|
||||
Text: "valid",
|
||||
Clock: 2,
|
||||
Timestamp: 3,
|
||||
ResponseTo: "",
|
||||
EnsName: "",
|
||||
Payload: &protobuf.ChatMessage_Image{
|
||||
Image: &protobuf.ImageMessage{
|
||||
Type: protobuf.ImageMessage_UNKNOWN_IMAGE_TYPE,
|
||||
Payload: []byte("some-payload"),
|
||||
},
|
||||
},
|
||||
MessageType: protobuf.ChatMessage_ONE_TO_ONE,
|
||||
ContentType: protobuf.ChatMessage_STICKER,
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Invalid image message, missing payload",
|
||||
WhisperTimestamp: 2,
|
||||
Valid: false,
|
||||
Message: protobuf.ChatMessage{
|
||||
ChatId: "a",
|
||||
Text: "valid",
|
||||
Clock: 2,
|
||||
Timestamp: 3,
|
||||
ResponseTo: "",
|
||||
EnsName: "",
|
||||
Payload: &protobuf.ChatMessage_Image{
|
||||
Image: &protobuf.ImageMessage{
|
||||
Type: 1,
|
||||
},
|
||||
},
|
||||
MessageType: protobuf.ChatMessage_ONE_TO_ONE,
|
||||
ContentType: protobuf.ChatMessage_IMAGE,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
|
|
@ -4,7 +4,9 @@ import (
|
|||
"context"
|
||||
"crypto/ecdsa"
|
||||
"database/sql"
|
||||
"io/ioutil"
|
||||
"math/rand"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
|
@ -21,6 +23,7 @@ import (
|
|||
"github.com/status-im/status-go/protocol/encryption/sharedsecret"
|
||||
"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/images"
|
||||
"github.com/status-im/status-go/protocol/protobuf"
|
||||
"github.com/status-im/status-go/protocol/sqlite"
|
||||
"github.com/status-im/status-go/protocol/transport"
|
||||
|
@ -1389,6 +1392,25 @@ func (m *Messenger) SendChatMessage(ctx context.Context, message *Message) (*Mes
|
|||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
if len(message.ImagePath) != 0 {
|
||||
file, err := os.Open(message.ImagePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
payload, err := ioutil.ReadAll(file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
}
|
||||
image := protobuf.ImageMessage{
|
||||
Payload: payload,
|
||||
Type: images.ImageType(payload),
|
||||
}
|
||||
message.Payload = &protobuf.ChatMessage_Image{Image: &image}
|
||||
|
||||
}
|
||||
logger := m.logger.With(zap.String("site", "Send"), zap.String("chatID", message.ChatId))
|
||||
var response MessengerResponse
|
||||
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
// 000002_add_last_ens_clock_value.up.sql (77B)
|
||||
// 1586358095_add_replace.down.sql (0)
|
||||
// 1586358095_add_replace.up.sql (224B)
|
||||
// doc.go (377B)
|
||||
// 1588665364_add_image_data.down.sql (0)
|
||||
// 1588665364_add_image_data.up.sql (186B)
|
||||
// 1589365189_add_pow_target.down.sql (0)
|
||||
// 1589365189_add_pow_target.up.sql (66B)
|
||||
// doc.go (850B)
|
||||
|
||||
package migrations
|
||||
|
||||
|
@ -170,7 +174,7 @@ func _1586358095_add_replaceDownSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1586358095_add_replace.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1586355165, 0)}
|
||||
info := bindataFileInfo{name: "1586358095_add_replace.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1589265610, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
return a, nil
|
||||
}
|
||||
|
@ -190,12 +194,92 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1586352560, 0)}
|
||||
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1589265610, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbb\x6e\xc3\x30\x0c\x45\x77\x7f\xc5\x45\x96\x2c\xb5\xb4\x74\xea\xd6\xb1\x7b\x7f\x80\x91\x68\x89\x88\x1e\xae\x48\xe7\xf1\xf7\x85\xd3\x02\xcd\xd6\xf5\x00\xe7\xf0\xd2\x7b\x7c\x66\x51\x2c\x52\x18\xa2\x68\x1c\x58\x95\xc6\x1d\x27\x0e\xb4\x29\xe3\x90\xc4\xf2\x76\x72\xa1\x57\xaf\x46\xb6\xe9\x2c\xd5\x57\x49\x83\x8c\xfd\xe5\xf5\x30\x79\x8f\x40\xed\x68\xc8\xd4\x62\xe1\x47\x4b\xa1\x46\xc3\xa4\x25\x5c\xc5\x32\x08\xeb\xe0\x45\x6e\x0e\xef\x86\xc2\xa4\x06\xcb\x64\x47\x85\x65\x46\x20\xe5\x3d\xb3\xf4\x81\xd4\xe7\x93\xb4\x48\x46\x6e\x47\x1f\xcb\x13\xd9\x17\x06\x2a\x85\x23\x96\xd1\xeb\xc3\x55\xaa\x8c\x28\x83\x83\xf5\x71\x7f\x01\xa9\xb2\xa1\x51\x65\xdd\xfd\x4c\x17\x46\xeb\xbf\xe7\x41\x2d\xfe\xff\x11\xae\x7d\x9c\x15\xa4\xe0\xdb\xca\xc1\x38\xba\x69\x5a\x29\x9c\x29\x31\xf4\xab\x88\xf1\x34\x79\x9f\xfa\x5b\xe2\xc6\xbb\xf5\xbc\x71\x5e\xcf\x09\x3f\x35\xe9\x4d\x31\x77\x38\xe7\xff\x80\x4b\x1d\x6e\xfa\x0e\x00\x00\xff\xff\x9d\x60\x3d\x88\x79\x01\x00\x00")
|
||||
var __1588665364_add_image_dataDownSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
|
||||
|
||||
func _1588665364_add_image_dataDownSqlBytes() ([]byte, error) {
|
||||
return bindataRead(
|
||||
__1588665364_add_image_dataDownSql,
|
||||
"1588665364_add_image_data.down.sql",
|
||||
)
|
||||
}
|
||||
|
||||
func _1588665364_add_image_dataDownSql() (*asset, error) {
|
||||
bytes, err := _1588665364_add_image_dataDownSqlBytes()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1588665364_add_image_data.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1589363796, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
var __1588665364_add_image_dataUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\xcb\x41\x0a\xc2\x40\x0c\x05\xd0\x7d\x4f\xf1\xe9\x19\xc4\x4d\x57\x33\x4e\x04\x21\x66\x40\x32\xe0\xae\x44\x0c\x45\xb0\x58\x8c\x2e\x7a\xfb\x9e\xa1\x07\x78\x89\x95\x6e\xd0\x94\x99\xf0\x0f\xff\x8e\xb3\x47\xd8\xe4\x81\x54\x0a\x4e\x95\xdb\x55\xf0\x9a\x6d\xf2\x71\xb1\xf5\xfd\xb1\x27\x32\xd7\x3c\x74\x3b\xe0\x6f\x5d\x1c\x17\xd1\x5d\xe8\x61\xe1\xc7\x03\x94\xee\x0a\xa9\x0a\x69\xcc\x28\x74\x4e\x8d\x15\x7d\x3f\x74\x5b\x00\x00\x00\xff\xff\xf8\x4b\xbd\xbe\xba\x00\x00\x00")
|
||||
|
||||
func _1588665364_add_image_dataUpSqlBytes() ([]byte, error) {
|
||||
return bindataRead(
|
||||
__1588665364_add_image_dataUpSql,
|
||||
"1588665364_add_image_data.up.sql",
|
||||
)
|
||||
}
|
||||
|
||||
func _1588665364_add_image_dataUpSql() (*asset, error) {
|
||||
bytes, err := _1588665364_add_image_dataUpSqlBytes()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1589363796, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
var __1589365189_add_pow_targetDownSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
|
||||
|
||||
func _1589365189_add_pow_targetDownSqlBytes() ([]byte, error) {
|
||||
return bindataRead(
|
||||
__1589365189_add_pow_targetDownSql,
|
||||
"1589365189_add_pow_target.down.sql",
|
||||
)
|
||||
}
|
||||
|
||||
func _1589365189_add_pow_targetDownSql() (*asset, error) {
|
||||
bytes, err := _1589365189_add_pow_targetDownSqlBytes()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1589365189_add_pow_target.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1589365242, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
var __1589365189_add_pow_targetUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x4a\x2c\x8f\xcf\x4d\x2d\x2e\x4e\x4c\x4f\x2d\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x28\xc8\x2f\x8f\x2f\x49\x2c\x4a\x4f\x2d\x51\x08\x72\x75\xf4\x51\x48\x49\x4d\x4b\x2c\xcd\x29\x51\x30\xd0\x33\x30\xb2\xe6\x02\x04\x00\x00\xff\xff\x49\xd6\x04\x23\x42\x00\x00\x00")
|
||||
|
||||
func _1589365189_add_pow_targetUpSqlBytes() ([]byte, error) {
|
||||
return bindataRead(
|
||||
__1589365189_add_pow_targetUpSql,
|
||||
"1589365189_add_pow_target.up.sql",
|
||||
)
|
||||
}
|
||||
|
||||
func _1589365189_add_pow_targetUpSql() (*asset, error) {
|
||||
bytes, err := _1589365189_add_pow_targetUpSqlBytes()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1589365245, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\x3f\x8f\xdb\x3e\x0c\xdd\xf3\x29\x1e\x6e\xb9\xe5\x22\x07\xf8\xfd\xa6\xdb\x3a\x74\xe8\xd2\x2e\xd9\x0b\x46\xa6\x6d\x22\x32\xe5\x8a\xf4\x39\xf9\xf6\x85\x74\x17\x9c\x51\x14\xe8\x4a\x89\x8f\xef\x5f\xd7\xe1\x3c\x89\x61\x90\xc4\x10\x83\x72\x64\x33\x2a\x77\x5c\x38\xd2\x6a\x8c\xa7\x51\x7c\x5a\x2f\x21\xe6\xb9\x33\x27\x5f\xed\x28\x73\x37\xcb\x58\xc8\xb9\x7b\xfb\xff\xe9\xd0\x75\x88\xa4\xcf\x8e\x89\xb4\x4f\xdc\xb0\x0c\xe6\x54\x5c\x74\xc4\x26\x3e\x81\xb0\x14\x1e\xe4\x16\xf0\xc5\x91\x98\xcc\xe1\x13\xf9\xb3\xc1\x27\x46\x24\xe3\x0a\x33\xe4\x82\x31\x1f\x2f\xa2\x3d\x39\x85\x3a\xfa\x36\xec\x26\x95\x61\xa4\x94\xb8\xc7\x50\xf2\xdc\x76\x8d\x66\x46\x2f\x85\xa3\xe7\x72\x7f\x01\x99\xb1\x43\x69\x66\xab\xfb\x13\xbd\x31\x34\x7f\x9c\x07\x69\xff\x6f\x45\xd8\x72\xb9\x1a\xc8\xc0\xb7\x85\xa3\x73\x1f\x0e\x15\xeb\xfb\x8f\xf3\xd7\x57\x9c\x27\xae\xf0\x55\x5a\x1e\x1a\x85\x66\x9e\x32\xf7\x06\xcf\x18\x72\x4a\x79\x6b\x0f\xab\xca\x0d\x2e\x33\x9b\xd3\xbc\x20\x66\x7d\x63\x75\xc9\x5a\xd1\x56\x4d\x72\xe5\xf6\xcf\xb7\x0c\x51\x71\xa1\xf4\xee\x5e\x93\x7e\x7e\x37\xe8\x11\x44\x5c\x4b\x61\xf5\x74\x6f\x2b\xac\xb1\xdc\x97\x8a\x85\x77\xe6\x92\xd5\x9a\xbc\xa5\x64\xcf\x31\xa7\xdd\xbc\xa2\xd9\x44\x85\x3f\x1d\x73\xba\x24\x7e\xc1\x36\x49\x9c\x30\x33\xa9\xb5\x40\xda\x87\x44\xce\xe6\x9f\xfb\x10\x85\x73\x99\xad\x0a\xae\xfc\xaa\xbb\x15\xb3\x16\xe7\x91\xc3\x8e\x50\x33\x7f\xa1\xf8\x51\x85\xc7\x95\xd5\xd8\x40\x7f\x98\xf2\x08\x79\x63\x50\xdf\xe3\x74\x3a\x9d\xfe\xfb\x19\x42\x68\x5d\xe0\x1b\xcd\x4b\xa5\xe9\xb5\xa3\x9b\xa4\x84\x0b\x43\x46\xcd\x85\xfb\xca\x8a\x6f\x62\xad\x64\x31\x09\xab\xd7\xcc\x2a\x5e\x4e\x3d\x97\xaa\x47\xf7\x7a\xfe\x66\x59\x38\x1c\x16\x8a\x57\x1a\x19\xf6\x2b\x89\x73\x0d\x7a\xcc\xaf\x23\x2b\xd7\x3a\xec\xcb\x77\x5c\xae\xe3\xde\xec\x63\x46\x08\xdd\xe7\x20\x8c\x19\xe1\xf0\x3b\x00\x00\xff\xff\x12\xcd\x7f\xc4\x52\x03\x00\x00")
|
||||
|
||||
func docGoBytes() ([]byte, error) {
|
||||
return bindataRead(
|
||||
|
@ -210,8 +294,8 @@ func docGo() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1574354941, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}}
|
||||
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1589265610, 0)}
|
||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}}
|
||||
return a, nil
|
||||
}
|
||||
|
||||
|
@ -318,6 +402,14 @@ var _bindata = map[string]func() (*asset, error){
|
|||
|
||||
"1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql,
|
||||
|
||||
"1588665364_add_image_data.down.sql": _1588665364_add_image_dataDownSql,
|
||||
|
||||
"1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql,
|
||||
|
||||
"1589365189_add_pow_target.down.sql": _1589365189_add_pow_targetDownSql,
|
||||
|
||||
"1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql,
|
||||
|
||||
"doc.go": docGo,
|
||||
}
|
||||
|
||||
|
@ -368,6 +460,10 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
|||
"000002_add_last_ens_clock_value.up.sql": &bintree{_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}},
|
||||
"1586358095_add_replace.down.sql": &bintree{_1586358095_add_replaceDownSql, map[string]*bintree{}},
|
||||
"1586358095_add_replace.up.sql": &bintree{_1586358095_add_replaceUpSql, map[string]*bintree{}},
|
||||
"1588665364_add_image_data.down.sql": &bintree{_1588665364_add_image_dataDownSql, map[string]*bintree{}},
|
||||
"1588665364_add_image_data.up.sql": &bintree{_1588665364_add_image_dataUpSql, map[string]*bintree{}},
|
||||
"1589365189_add_pow_target.down.sql": &bintree{_1589365189_add_pow_targetDownSql, map[string]*bintree{}},
|
||||
"1589365189_add_pow_target.up.sql": &bintree{_1589365189_add_pow_targetUpSql, map[string]*bintree{}},
|
||||
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
||||
}}
|
||||
|
||||
|
|
|
@ -20,6 +20,40 @@ var _ = math.Inf
|
|||
// proto package needs to be updated.
|
||||
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||
|
||||
type ImageMessage_ImageType int32
|
||||
|
||||
const (
|
||||
ImageMessage_UNKNOWN_IMAGE_TYPE ImageMessage_ImageType = 0
|
||||
ImageMessage_PNG ImageMessage_ImageType = 1
|
||||
ImageMessage_JPEG ImageMessage_ImageType = 2
|
||||
ImageMessage_WEBP ImageMessage_ImageType = 3
|
||||
ImageMessage_GIF ImageMessage_ImageType = 4
|
||||
)
|
||||
|
||||
var ImageMessage_ImageType_name = map[int32]string{
|
||||
0: "UNKNOWN_IMAGE_TYPE",
|
||||
1: "PNG",
|
||||
2: "JPEG",
|
||||
3: "WEBP",
|
||||
4: "GIF",
|
||||
}
|
||||
|
||||
var ImageMessage_ImageType_value = map[string]int32{
|
||||
"UNKNOWN_IMAGE_TYPE": 0,
|
||||
"PNG": 1,
|
||||
"JPEG": 2,
|
||||
"WEBP": 3,
|
||||
"GIF": 4,
|
||||
}
|
||||
|
||||
func (x ImageMessage_ImageType) String() string {
|
||||
return proto.EnumName(ImageMessage_ImageType_name, int32(x))
|
||||
}
|
||||
|
||||
func (ImageMessage_ImageType) EnumDescriptor() ([]byte, []int) {
|
||||
return fileDescriptor_263952f55fd35689, []int{1, 0}
|
||||
}
|
||||
|
||||
type ChatMessage_MessageType int32
|
||||
|
||||
const (
|
||||
|
@ -52,7 +86,7 @@ func (x ChatMessage_MessageType) String() string {
|
|||
}
|
||||
|
||||
func (ChatMessage_MessageType) EnumDescriptor() ([]byte, []int) {
|
||||
return fileDescriptor_263952f55fd35689, []int{1, 0}
|
||||
return fileDescriptor_263952f55fd35689, []int{2, 0}
|
||||
}
|
||||
|
||||
type ChatMessage_ContentType int32
|
||||
|
@ -66,6 +100,7 @@ const (
|
|||
ChatMessage_TRANSACTION_COMMAND ChatMessage_ContentType = 5
|
||||
// Only local
|
||||
ChatMessage_SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP ChatMessage_ContentType = 6
|
||||
ChatMessage_IMAGE ChatMessage_ContentType = 7
|
||||
)
|
||||
|
||||
var ChatMessage_ContentType_name = map[int32]string{
|
||||
|
@ -76,6 +111,7 @@ var ChatMessage_ContentType_name = map[int32]string{
|
|||
4: "EMOJI",
|
||||
5: "TRANSACTION_COMMAND",
|
||||
6: "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP",
|
||||
7: "IMAGE",
|
||||
}
|
||||
|
||||
var ChatMessage_ContentType_value = map[string]int32{
|
||||
|
@ -86,6 +122,7 @@ var ChatMessage_ContentType_value = map[string]int32{
|
|||
"EMOJI": 4,
|
||||
"TRANSACTION_COMMAND": 5,
|
||||
"SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP": 6,
|
||||
"IMAGE": 7,
|
||||
}
|
||||
|
||||
func (x ChatMessage_ContentType) String() string {
|
||||
|
@ -93,7 +130,7 @@ func (x ChatMessage_ContentType) String() string {
|
|||
}
|
||||
|
||||
func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) {
|
||||
return fileDescriptor_263952f55fd35689, []int{1, 1}
|
||||
return fileDescriptor_263952f55fd35689, []int{2, 1}
|
||||
}
|
||||
|
||||
type StickerMessage struct {
|
||||
|
@ -143,6 +180,53 @@ func (m *StickerMessage) GetPack() int32 {
|
|||
return 0
|
||||
}
|
||||
|
||||
type ImageMessage struct {
|
||||
Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
|
||||
Type ImageMessage_ImageType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.ImageMessage_ImageType" json:"type,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *ImageMessage) Reset() { *m = ImageMessage{} }
|
||||
func (m *ImageMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*ImageMessage) ProtoMessage() {}
|
||||
func (*ImageMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_263952f55fd35689, []int{1}
|
||||
}
|
||||
|
||||
func (m *ImageMessage) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_ImageMessage.Unmarshal(m, b)
|
||||
}
|
||||
func (m *ImageMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_ImageMessage.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (m *ImageMessage) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_ImageMessage.Merge(m, src)
|
||||
}
|
||||
func (m *ImageMessage) XXX_Size() int {
|
||||
return xxx_messageInfo_ImageMessage.Size(m)
|
||||
}
|
||||
func (m *ImageMessage) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_ImageMessage.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_ImageMessage proto.InternalMessageInfo
|
||||
|
||||
func (m *ImageMessage) GetPayload() []byte {
|
||||
if m != nil {
|
||||
return m.Payload
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ImageMessage) GetType() ImageMessage_ImageType {
|
||||
if m != nil {
|
||||
return m.Type
|
||||
}
|
||||
return ImageMessage_UNKNOWN_IMAGE_TYPE
|
||||
}
|
||||
|
||||
type ChatMessage struct {
|
||||
// Lamport timestamp of the chat message
|
||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||
|
@ -166,6 +250,7 @@ type ChatMessage struct {
|
|||
ContentType ChatMessage_ContentType `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"`
|
||||
// Types that are valid to be assigned to Payload:
|
||||
// *ChatMessage_Sticker
|
||||
// *ChatMessage_Image
|
||||
Payload isChatMessage_Payload `protobuf_oneof:"payload"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
|
@ -176,7 +261,7 @@ func (m *ChatMessage) Reset() { *m = ChatMessage{} }
|
|||
func (m *ChatMessage) String() string { return proto.CompactTextString(m) }
|
||||
func (*ChatMessage) ProtoMessage() {}
|
||||
func (*ChatMessage) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_263952f55fd35689, []int{1}
|
||||
return fileDescriptor_263952f55fd35689, []int{2}
|
||||
}
|
||||
|
||||
func (m *ChatMessage) XXX_Unmarshal(b []byte) error {
|
||||
|
@ -261,8 +346,14 @@ type ChatMessage_Sticker struct {
|
|||
Sticker *StickerMessage `protobuf:"bytes,9,opt,name=sticker,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ChatMessage_Image struct {
|
||||
Image *ImageMessage `protobuf:"bytes,10,opt,name=image,proto3,oneof"`
|
||||
}
|
||||
|
||||
func (*ChatMessage_Sticker) isChatMessage_Payload() {}
|
||||
|
||||
func (*ChatMessage_Image) isChatMessage_Payload() {}
|
||||
|
||||
func (m *ChatMessage) GetPayload() isChatMessage_Payload {
|
||||
if m != nil {
|
||||
return m.Payload
|
||||
|
@ -277,52 +368,68 @@ func (m *ChatMessage) GetSticker() *StickerMessage {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *ChatMessage) GetImage() *ImageMessage {
|
||||
if x, ok := m.GetPayload().(*ChatMessage_Image); ok {
|
||||
return x.Image
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// XXX_OneofWrappers is for the internal use of the proto package.
|
||||
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
|
||||
return []interface{}{
|
||||
(*ChatMessage_Sticker)(nil),
|
||||
(*ChatMessage_Image)(nil),
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterEnum("protobuf.ImageMessage_ImageType", ImageMessage_ImageType_name, ImageMessage_ImageType_value)
|
||||
proto.RegisterEnum("protobuf.ChatMessage_MessageType", ChatMessage_MessageType_name, ChatMessage_MessageType_value)
|
||||
proto.RegisterEnum("protobuf.ChatMessage_ContentType", ChatMessage_ContentType_name, ChatMessage_ContentType_value)
|
||||
proto.RegisterType((*StickerMessage)(nil), "protobuf.StickerMessage")
|
||||
proto.RegisterType((*ImageMessage)(nil), "protobuf.ImageMessage")
|
||||
proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage")
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("chat_message.proto", fileDescriptor_263952f55fd35689) }
|
||||
|
||||
var fileDescriptor_263952f55fd35689 = []byte{
|
||||
// 472 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xcd, 0x6e, 0xd3, 0x40,
|
||||
0x10, 0xc7, 0xeb, 0xc6, 0x8e, 0x93, 0x71, 0x89, 0xcc, 0x50, 0xa9, 0x46, 0xaa, 0x44, 0x88, 0x38,
|
||||
0xe4, 0x94, 0x43, 0xe1, 0xc0, 0xd5, 0x75, 0x57, 0xc5, 0xb4, 0x5e, 0x47, 0xf6, 0x06, 0xe8, 0x69,
|
||||
0xb5, 0x75, 0x16, 0x12, 0xa5, 0xfe, 0x50, 0xbc, 0x48, 0xe4, 0xc2, 0x73, 0x70, 0xe2, 0x59, 0x91,
|
||||
0xd7, 0x09, 0x49, 0x38, 0x70, 0xda, 0xf9, 0xfc, 0xcd, 0x7f, 0x66, 0x01, 0xb3, 0x85, 0x50, 0x3c,
|
||||
0x97, 0x75, 0x2d, 0xbe, 0xc9, 0x49, 0xb5, 0x2e, 0x55, 0x89, 0x3d, 0xfd, 0x3c, 0x7e, 0xff, 0x3a,
|
||||
0x7a, 0x0f, 0x83, 0x54, 0x2d, 0xb3, 0x95, 0x5c, 0x47, 0x6d, 0x05, 0x22, 0x98, 0x0b, 0x51, 0x2f,
|
||||
0x3c, 0x63, 0x68, 0x8c, 0xfb, 0x89, 0xb6, 0x9b, 0x58, 0x25, 0xb2, 0x95, 0x77, 0x3a, 0x34, 0xc6,
|
||||
0x56, 0xa2, 0xed, 0xd1, 0x2f, 0x0b, 0x9c, 0x60, 0x21, 0xd4, 0xae, 0xef, 0x1c, 0xac, 0xec, 0xa9,
|
||||
0xcc, 0x56, 0xba, 0xd1, 0x4c, 0x5a, 0x07, 0x2f, 0xa1, 0xaf, 0x96, 0xb9, 0xac, 0x95, 0xc8, 0x2b,
|
||||
0xdd, 0x6e, 0x26, 0xfb, 0x40, 0xc3, 0x55, 0xf2, 0x87, 0xf2, 0x3a, 0xed, 0xac, 0xc6, 0xc6, 0x57,
|
||||
0xe0, 0xac, 0x65, 0x5d, 0x95, 0x45, 0x2d, 0xb9, 0x2a, 0x3d, 0x53, 0xa7, 0x60, 0x17, 0x62, 0x25,
|
||||
0xbe, 0x84, 0x9e, 0x2c, 0x6a, 0x5e, 0x88, 0x5c, 0x7a, 0x96, 0xce, 0xda, 0xb2, 0xa8, 0xa9, 0xc8,
|
||||
0x25, 0x5e, 0x80, 0xad, 0xb7, 0x5d, 0xce, 0xbd, 0xae, 0xce, 0x74, 0x1b, 0x37, 0x9c, 0xe3, 0x0d,
|
||||
0x9c, 0x6d, 0x2f, 0xc0, 0xd5, 0xa6, 0x92, 0x9e, 0x3d, 0x34, 0xc6, 0x83, 0xab, 0xd7, 0x93, 0xdd,
|
||||
0x1d, 0x26, 0x07, 0x9b, 0x4c, 0xb6, 0x2f, 0xdb, 0x54, 0x32, 0x71, 0xf2, 0xbd, 0xd3, 0x50, 0xb2,
|
||||
0xb2, 0x50, 0xb2, 0x50, 0x2d, 0xa5, 0xf7, 0x3f, 0x4a, 0xd0, 0x56, 0xb6, 0x94, 0x6c, 0xef, 0xe0,
|
||||
0x3b, 0xb0, 0xeb, 0xf6, 0xe4, 0x5e, 0x7f, 0x68, 0x8c, 0x9d, 0x2b, 0x6f, 0x0f, 0x38, 0xfe, 0x8b,
|
||||
0x0f, 0x27, 0xc9, 0xae, 0x74, 0xf4, 0x13, 0x9c, 0x03, 0x5d, 0xe8, 0xc1, 0xf9, 0x8c, 0xde, 0xd1,
|
||||
0xf8, 0x33, 0xe5, 0x11, 0x49, 0x53, 0xff, 0x96, 0x70, 0xf6, 0x30, 0x25, 0xee, 0x09, 0x0e, 0x00,
|
||||
0x62, 0x4a, 0x38, 0x8b, 0x79, 0x4c, 0x89, 0x6b, 0xa0, 0x0b, 0x67, 0xd3, 0xd9, 0xf5, 0x7d, 0x18,
|
||||
0xf0, 0xdb, 0x24, 0x9e, 0x4d, 0xdd, 0x53, 0x7c, 0x0e, 0xcf, 0xa6, 0x49, 0xf8, 0xc9, 0x67, 0x64,
|
||||
0x1b, 0xea, 0xe0, 0x10, 0x2e, 0xd3, 0x87, 0x94, 0x91, 0xe8, 0x2f, 0xed, 0xb8, 0xc2, 0x1c, 0xfd,
|
||||
0x36, 0xc0, 0x39, 0x58, 0xe9, 0x50, 0x40, 0x10, 0x53, 0x46, 0x28, 0x3b, 0x10, 0xc0, 0xc8, 0x17,
|
||||
0xc6, 0xa7, 0xf7, 0x7e, 0x48, 0x5d, 0x03, 0x1d, 0xb0, 0x53, 0x16, 0x06, 0x77, 0x24, 0x71, 0x4f,
|
||||
0x11, 0xa0, 0x9b, 0x32, 0x9f, 0xcd, 0x52, 0xb7, 0x83, 0x7d, 0xb0, 0x48, 0x14, 0x7f, 0x0c, 0x5d,
|
||||
0x13, 0x2f, 0xe0, 0x05, 0x4b, 0x7c, 0x9a, 0xfa, 0x01, 0x0b, 0xe3, 0x86, 0x18, 0x45, 0x3e, 0xbd,
|
||||
0x71, 0x2d, 0x1c, 0xc3, 0x9b, 0x7f, 0x84, 0xed, 0xa6, 0x1d, 0x0b, 0xec, 0x5e, 0xf7, 0xc1, 0xae,
|
||||
0xc4, 0xe6, 0xa9, 0x14, 0xf3, 0xc7, 0xae, 0xbe, 0xe7, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff,
|
||||
0x0e, 0x1e, 0x7b, 0x43, 0xfb, 0x02, 0x00, 0x00,
|
||||
// 569 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xcd, 0x4e, 0xdb, 0x40,
|
||||
0x10, 0xc6, 0x89, 0x1d, 0x27, 0xe3, 0x14, 0x6d, 0xa7, 0x08, 0x5c, 0x09, 0xa9, 0x69, 0xd4, 0x43,
|
||||
0x4e, 0x39, 0x50, 0x0e, 0xbd, 0x9a, 0xb0, 0x0d, 0x06, 0xfc, 0xa3, 0xf5, 0xa6, 0x94, 0x93, 0x65,
|
||||
0xcc, 0x96, 0x44, 0xe0, 0xd8, 0xc2, 0x5b, 0xa9, 0x5c, 0xfa, 0x3e, 0x7d, 0x9e, 0xbe, 0x50, 0xe5,
|
||||
0x35, 0x26, 0x4e, 0x55, 0xf5, 0xb4, 0xf3, 0xfb, 0xed, 0xb7, 0xdf, 0xcc, 0x02, 0xa6, 0xcb, 0x44,
|
||||
0xc6, 0x99, 0x28, 0xcb, 0xe4, 0x4e, 0x4c, 0x8b, 0xc7, 0x5c, 0xe6, 0xd8, 0x57, 0xc7, 0xcd, 0xf7,
|
||||
0x6f, 0xe3, 0x4f, 0xb0, 0x1b, 0xc9, 0x55, 0x7a, 0x2f, 0x1e, 0xbd, 0xba, 0x02, 0x11, 0xf4, 0x65,
|
||||
0x52, 0x2e, 0x6d, 0x6d, 0xa4, 0x4d, 0x06, 0x4c, 0xd9, 0x55, 0xac, 0x48, 0xd2, 0x7b, 0xbb, 0x33,
|
||||
0xd2, 0x26, 0x06, 0x53, 0xf6, 0xf8, 0x97, 0x06, 0x43, 0x37, 0x4b, 0xee, 0x44, 0xd3, 0x68, 0x83,
|
||||
0x59, 0x24, 0x4f, 0x0f, 0x79, 0x72, 0xab, 0x7a, 0x87, 0xac, 0x71, 0xf1, 0x18, 0x74, 0xf9, 0x54,
|
||||
0x08, 0xd5, 0xbe, 0x7b, 0x34, 0x9a, 0x36, 0xb7, 0x4f, 0xdb, 0xfd, 0xb5, 0xc3, 0x9f, 0x0a, 0xc1,
|
||||
0x54, 0xf5, 0xd8, 0x85, 0xc1, 0x4b, 0x08, 0xf7, 0x01, 0x17, 0xfe, 0x85, 0x1f, 0x5c, 0xf9, 0xb1,
|
||||
0xeb, 0x39, 0x73, 0x1a, 0xf3, 0xeb, 0x90, 0x92, 0x1d, 0x34, 0xa1, 0x1b, 0xfa, 0x73, 0xa2, 0x61,
|
||||
0x1f, 0xf4, 0xf3, 0x90, 0xce, 0x49, 0xa7, 0xb2, 0xae, 0xe8, 0x49, 0x48, 0xba, 0x55, 0x72, 0xee,
|
||||
0x7e, 0x26, 0xfa, 0xf8, 0xb7, 0x01, 0xd6, 0x6c, 0x99, 0xc8, 0x86, 0xea, 0x1e, 0x18, 0xe9, 0x43,
|
||||
0x9e, 0xde, 0x2b, 0xa2, 0x3a, 0xab, 0x1d, 0x3c, 0x84, 0x81, 0x5c, 0x65, 0xa2, 0x94, 0x49, 0x56,
|
||||
0x28, 0xae, 0x3a, 0xdb, 0x04, 0x2a, 0x0d, 0xa4, 0xf8, 0x21, 0xed, 0x6e, 0xad, 0x4b, 0x65, 0xe3,
|
||||
0x3b, 0xb0, 0x1e, 0x45, 0x59, 0xe4, 0xeb, 0x52, 0xc4, 0x32, 0xb7, 0x75, 0x95, 0x82, 0x26, 0xc4,
|
||||
0x73, 0x7c, 0x0b, 0x7d, 0xb1, 0x2e, 0xe3, 0x75, 0x92, 0x09, 0xdb, 0x50, 0x59, 0x53, 0xac, 0x4b,
|
||||
0x3f, 0xc9, 0x04, 0x1e, 0x80, 0xa9, 0x26, 0xb3, 0xba, 0xb5, 0x7b, 0x2a, 0xd3, 0xab, 0x5c, 0xf7,
|
||||
0x16, 0x4f, 0x61, 0xf8, 0x3c, 0xad, 0x58, 0xa9, 0x66, 0x2a, 0xd5, 0xde, 0x6f, 0x54, 0x6b, 0xbd,
|
||||
0x64, 0xfa, 0x7c, 0x2a, 0xd9, 0xac, 0x6c, 0xe3, 0x54, 0x28, 0x69, 0xbe, 0x96, 0x62, 0x2d, 0x6b,
|
||||
0x94, 0xfe, 0xff, 0x50, 0x66, 0x75, 0x65, 0x8d, 0x92, 0x6e, 0x1c, 0x3c, 0x06, 0xb3, 0xac, 0xd7,
|
||||
0xc3, 0x1e, 0x8c, 0xb4, 0x89, 0x75, 0x64, 0x6f, 0x00, 0xb6, 0xf7, 0xe6, 0x6c, 0x87, 0x35, 0xa5,
|
||||
0x38, 0x05, 0x63, 0x55, 0x4d, 0xce, 0x06, 0xd5, 0xb3, 0xff, 0xef, 0x81, 0x9f, 0xed, 0xb0, 0xba,
|
||||
0x6c, 0xfc, 0x13, 0xac, 0xd6, 0x3b, 0xd0, 0x86, 0xbd, 0x66, 0xd6, 0x1e, 0x8d, 0xa2, 0xd6, 0xb4,
|
||||
0x77, 0x01, 0x02, 0x9f, 0xc6, 0x3c, 0x88, 0x03, 0x9f, 0x12, 0x0d, 0x09, 0x0c, 0xc3, 0xc5, 0xc9,
|
||||
0xa5, 0x3b, 0x8b, 0xe7, 0x2c, 0x58, 0x84, 0xa4, 0x83, 0xaf, 0xe1, 0x55, 0xc8, 0xdc, 0x2f, 0x0e,
|
||||
0xa7, 0xcf, 0xa1, 0x2e, 0x8e, 0xe0, 0x30, 0xba, 0x8e, 0x38, 0xf5, 0x5e, 0xd0, 0xb6, 0x2b, 0xf4,
|
||||
0x6a, 0x95, 0xad, 0x96, 0x04, 0x6d, 0x02, 0xb3, 0xc0, 0xe7, 0xd4, 0xe7, 0x2d, 0x02, 0x9c, 0x7e,
|
||||
0xe5, 0x71, 0x78, 0xe9, 0xb8, 0x3e, 0xd1, 0xd0, 0x02, 0x33, 0xe2, 0xee, 0xec, 0x82, 0x32, 0xd2,
|
||||
0x41, 0x80, 0x5e, 0xc4, 0x1d, 0xbe, 0x88, 0x48, 0x17, 0x07, 0x60, 0x50, 0x2f, 0x38, 0x77, 0x89,
|
||||
0x8e, 0x07, 0xf0, 0x86, 0x33, 0xc7, 0x8f, 0x9c, 0x19, 0x77, 0x83, 0x0a, 0xd1, 0xf3, 0x1c, 0xff,
|
||||
0x94, 0x18, 0x38, 0x81, 0x0f, 0x7f, 0x11, 0x6b, 0x6e, 0xdb, 0x26, 0xd8, 0xab, 0xd0, 0xd4, 0xd6,
|
||||
0x13, 0xf3, 0x64, 0xf0, 0xf2, 0xcb, 0x6e, 0x7a, 0x4a, 0xd6, 0x8f, 0x7f, 0x02, 0x00, 0x00, 0xff,
|
||||
0xff, 0x1f, 0xf2, 0x87, 0xb6, 0xe2, 0x03, 0x00, 0x00,
|
||||
}
|
||||
|
|
|
@ -7,6 +7,18 @@ message StickerMessage {
|
|||
int32 pack = 2;
|
||||
}
|
||||
|
||||
message ImageMessage {
|
||||
bytes payload = 1;
|
||||
ImageType type = 2;
|
||||
enum ImageType {
|
||||
UNKNOWN_IMAGE_TYPE = 0;
|
||||
PNG = 1;
|
||||
JPEG = 2;
|
||||
WEBP = 3;
|
||||
GIF = 4;
|
||||
}
|
||||
}
|
||||
|
||||
message ChatMessage {
|
||||
// Lamport timestamp of the chat message
|
||||
uint64 clock = 1;
|
||||
|
@ -32,6 +44,7 @@ message ChatMessage {
|
|||
|
||||
oneof payload {
|
||||
StickerMessage sticker = 9;
|
||||
ImageMessage image = 10;
|
||||
}
|
||||
|
||||
enum MessageType {
|
||||
|
@ -50,5 +63,6 @@ message ChatMessage {
|
|||
TRANSACTION_COMMAND = 5;
|
||||
// Only local
|
||||
SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP = 6;
|
||||
IMAGE = 7;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
package transport
|
||||
|
||||
import "github.com/status-im/status-go/eth-node/types"
|
||||
|
||||
func DefaultMessage() types.NewMessage {
|
||||
msg := types.NewMessage{}
|
||||
|
||||
msg.TTL = 10
|
||||
msg.PowTarget = 0.002
|
||||
msg.PowTime = 1
|
||||
|
||||
return msg
|
||||
}
|
Loading…
Reference in New Issue