Added Messenger.SendEmojiReaction()
stubbed SendEmojiReactionRetraction() added new protocol/EmojiReaction{}
This commit is contained in:
parent
1dadab9104
commit
2d9db29f31
|
@ -0,0 +1,26 @@
|
|||
package protocol
|
||||
|
||||
import "github.com/status-im/status-go/protocol/protobuf"
|
||||
|
||||
// EmojiReaction represents an emoji reaction from a user in the application layer, used for persistence, querying and
|
||||
// signaling
|
||||
type EmojiReaction struct {
|
||||
// ID calculated as keccak256(compressedAuthorPubKey, data) where data is unencrypted payload.
|
||||
ID string
|
||||
|
||||
// MessageID the ID of the target message that the user wishes to react to
|
||||
MessageID string
|
||||
|
||||
// ChatID the ID of the chat the message belongs to, for query efficiency the ChatID is stored in the db even though the
|
||||
// target message also stores the ChatID
|
||||
ChatID string
|
||||
|
||||
// EmojiID the ID of the emoji the user wishes to react with
|
||||
EmojiID protobuf.EmojiReaction_Type
|
||||
|
||||
// From is a public key of the author of the emoji reaction.
|
||||
From string
|
||||
|
||||
// Retracted represents whether the user has chosen to remove a previously given reaction
|
||||
Retracted bool
|
||||
}
|
|
@ -91,6 +91,7 @@ type MessengerResponse struct {
|
|||
Messages []*Message `json:"messages,omitempty"`
|
||||
Contacts []*Contact `json:"contacts,omitempty"`
|
||||
Installations []*multidevice.Installation `json:"installations,omitempty"`
|
||||
EmojiReactions []*EmojiReaction `json:"emoji_reactions"`
|
||||
}
|
||||
|
||||
func (m *MessengerResponse) IsEmpty() bool {
|
||||
|
@ -3235,3 +3236,54 @@ func generateAliasAndIdenticon(pk string) (string, string, error) {
|
|||
return name, identicon, nil
|
||||
|
||||
}
|
||||
|
||||
func (m *Messenger) SendEmojiReaction(ctx context.Context, chatID, messageID string, emojiId int) (*MessengerResponse, error) {
|
||||
var response MessengerResponse
|
||||
|
||||
chat, ok := m.allChats[chatID]
|
||||
if !ok {
|
||||
return nil, ErrChatNotFound
|
||||
}
|
||||
|
||||
clock, _ := chat.NextClockAndTimestamp(m.getTimesource())
|
||||
|
||||
emojiReaction := &protobuf.EmojiReaction{
|
||||
Clock: clock,
|
||||
MessageId: messageID,
|
||||
Type: protobuf.EmojiReaction_Type(emojiId),
|
||||
}
|
||||
encodedMessage, err := proto.Marshal(emojiReaction)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
id, err := m.dispatchMessage(ctx, &RawMessage{
|
||||
LocalChatID: chatID,
|
||||
Payload: encodedMessage,
|
||||
MessageType: protobuf.ApplicationMetadataMessage_EMOJI_REACTION,
|
||||
ResendAutomatically: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
emojiR := &EmojiReaction{
|
||||
ID: types.EncodeHex(id),
|
||||
MessageID: messageID,
|
||||
ChatID: chatID,
|
||||
EmojiID: protobuf.EmojiReaction_Type(emojiId),
|
||||
From: types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)),
|
||||
Retracted: false,
|
||||
}
|
||||
|
||||
response.EmojiReactions = []*EmojiReaction{emojiR}
|
||||
response.Chats = []*Chat{chat}
|
||||
|
||||
// TODO emoji reaction persistence
|
||||
|
||||
return &response, nil
|
||||
}
|
||||
|
||||
func (m *Messenger) SendEmojiReactionRetraction(ctx context.Context, EmojiReactionID string) (*MessengerResponse, error) {
|
||||
// TODO
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue