fix_: add method to retrieve prepared message (#5102)

* Add Test_WHEN_MessageContainsImage_THEN_PreparedMessageByIDContainsLink
* Add Messenger.PreparedMessageByID call
fixes #13684
This commit is contained in:
Andrey Bocharnikov 2024-05-01 12:54:47 +07:00 committed by GitHub
parent b5f8f792d5
commit 2fb6d615fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 1 deletions

View File

@ -4197,7 +4197,17 @@ func (m *Messenger) storeSyncBookmarks(bookmarkMap map[string]*browsers.Bookmark
} }
func (m *Messenger) MessageByID(id string) (*common.Message, error) { func (m *Messenger) MessageByID(id string) (*common.Message, error) {
return m.persistence.MessageByID(id) msg, err := m.persistence.MessageByID(id)
if err != nil {
return nil, err
}
if m.httpServer != nil {
err = m.prepareMessage(msg, m.httpServer)
if err != nil {
return nil, err
}
}
return msg, nil
} }
func (m *Messenger) MessagesExist(ids []string) (map[string]bool, error) { func (m *Messenger) MessagesExist(ids []string) (map[string]bool, error) {

View File

@ -3,6 +3,7 @@ package protocol
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"strings"
"testing" "testing"
"github.com/stretchr/testify/suite" "github.com/stretchr/testify/suite"
@ -198,3 +199,30 @@ func (s *TestMessengerPrepareMessageSuite) Test_WHEN_QuotedMessageDoesNotContain
s.Require().Equal(json.RawMessage(nil), retrievedMessages[0].QuotedMessage.AlbumImages) s.Require().Equal(json.RawMessage(nil), retrievedMessages[0].QuotedMessage.AlbumImages)
} }
func (s *TestMessengerPrepareMessageSuite) Test_WHEN_MessageContainsImage_THEN_PreparedMessageByIDContainsLink() {
// GIVEN: message with image saved to DB
message := s.generateTextMessage("id-1", "1", 1, "")
message.ContentType = protobuf.ChatMessage_IMAGE
message.Payload = &protobuf.ChatMessage_Image{
Image: &protobuf.ImageMessage{
Format: 1,
Payload: RandomBytes(100),
},
}
err := s.m.SaveMessages([]*common.Message{message})
s.Require().NoError(err)
mediaServer, err := server.NewMediaServer(s.m.database, nil, nil, nil)
s.Require().NoError(err)
s.Require().NoError(mediaServer.Start())
s.m.httpServer = mediaServer
// WHEN: message is prepared
loadedMessage, err := s.m.MessageByID(message.ID)
s.Require().NoError(err)
// THEN: message contains image link
s.Require().True(strings.HasPrefix(loadedMessage.ImageLocalURL, "https://Localhost"))
}