add last message
This commit is contained in:
parent
b4f8ae7602
commit
9807c285e5
|
@ -528,6 +528,13 @@ func (m *Messenger) HandleEditMessage(response *MessengerResponse, editMessage E
|
|||
return err
|
||||
}
|
||||
|
||||
if chat.LastMessage != nil && chat.LastMessage.ID == originalMessage.ID {
|
||||
chat.LastMessage = originalMessage
|
||||
err := m.saveChat(chat)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
response.AddMessage(originalMessage)
|
||||
response.AddChat(chat)
|
||||
|
||||
|
|
|
@ -104,6 +104,9 @@ func (s *MessengerEditMessageSuite) TestEditMessage() {
|
|||
s.Require().Len(sendResponse.Messages(), 1)
|
||||
s.Require().NotEmpty(sendResponse.Messages()[0].EditedAt)
|
||||
s.Require().Equal(sendResponse.Messages()[0].Text, editedText)
|
||||
s.Require().Len(sendResponse.Chats(), 1)
|
||||
s.Require().NotNil(sendResponse.Chats()[0].LastMessage)
|
||||
s.Require().NotEmpty(sendResponse.Chats()[0].LastMessage.EditedAt)
|
||||
|
||||
response, err = WaitOnMessengerResponse(
|
||||
s.m,
|
||||
|
@ -195,10 +198,12 @@ func (s *MessengerEditMessageSuite) TestEditMessageEdgeCases() {
|
|||
}
|
||||
|
||||
err = s.m.HandleEditMessage(response, editMessage)
|
||||
// It should error as the user can't edit this message
|
||||
s.Require().NoError(err)
|
||||
// It save the edit
|
||||
s.Require().Len(response.Messages(), 1)
|
||||
s.Require().Len(response.Chats(), 1)
|
||||
s.Require().NotNil(response.Chats()[0].LastMessage)
|
||||
s.Require().NotEmpty(response.Chats()[0].LastMessage.EditedAt)
|
||||
|
||||
editedMessage = response.Messages()[0]
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package protocol
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/status-im/status-go/protocol/common"
|
||||
"github.com/status-im/status-go/protocol/protobuf"
|
||||
|
@ -18,7 +17,6 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fmt.Println("IDDD", request.ID.String())
|
||||
message, err := m.persistence.MessageByID(request.ID.String())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -68,17 +66,39 @@ func (m *Messenger) EditMessage(ctx context.Context, request *requests.EditMessa
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if chat.LastMessage != nil && chat.LastMessage.ID == message.ID {
|
||||
chat.LastMessage = message
|
||||
err := m.saveChat(chat)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
response := &MessengerResponse{}
|
||||
response.AddMessage(message)
|
||||
response.AddChat(chat)
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (m *Messenger) applyEditMessage(editMessage *protobuf.EditMessage, message *common.Message) error {
|
||||
// TODO: should save an edit if it's the first time it's being edited
|
||||
message.Text = editMessage.Text
|
||||
message.EditedAt = editMessage.Clock
|
||||
|
||||
// Save original message as edit so we can retrieve history
|
||||
if message.EditedAt == 0 {
|
||||
originalEdit := EditMessage{}
|
||||
originalEdit.Clock = message.Clock
|
||||
originalEdit.LocalChatID = message.LocalChatID
|
||||
originalEdit.MessageId = message.ID
|
||||
originalEdit.Text = message.Text
|
||||
originalEdit.From = message.From
|
||||
err := m.persistence.SaveEdit(originalEdit)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err := message.PrepareContent(common.PubkeyToHex(&m.identity.PublicKey))
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue