Skip to content

Commit

Permalink
fix_: add method to retrieve prepared message (#5102)
Browse files Browse the repository at this point in the history
* Add Test_WHEN_MessageContainsImage_THEN_PreparedMessageByIDContainsLink
* Add Messenger.PreparedMessageByID call
fixes #13684
  • Loading branch information
friofry committed May 1, 2024
1 parent b5f8f79 commit 2fb6d61
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
12 changes: 11 additions & 1 deletion protocol/messenger.go
Original file line number Diff line number Diff line change
Expand Up @@ -4197,7 +4197,17 @@ func (m *Messenger) storeSyncBookmarks(bookmarkMap map[string]*browsers.Bookmark
}

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) {
Expand Down
28 changes: 28 additions & 0 deletions protocol/persistence_quoted_message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package protocol
import (
"encoding/json"
"fmt"
"strings"
"testing"

"github.com/stretchr/testify/suite"
Expand Down Expand Up @@ -198,3 +199,30 @@ func (s *TestMessengerPrepareMessageSuite) Test_WHEN_QuotedMessageDoesNotContain

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"))
}

0 comments on commit 2fb6d61

Please sign in to comment.