aboutsummaryrefslogtreecommitdiff
path: root/ui/messages/imagemessage.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/messages/imagemessage.go')
-rw-r--r--ui/messages/imagemessage.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/ui/messages/imagemessage.go b/ui/messages/imagemessage.go
index 04103b4..3f50193 100644
--- a/ui/messages/imagemessage.go
+++ b/ui/messages/imagemessage.go
@@ -37,6 +37,7 @@ func init() {
type ImageMessage struct {
BaseMessage
+ Body string
Homeserver string
FileID string
data []byte
@@ -45,9 +46,10 @@ type ImageMessage struct {
}
// NewImageMessage creates a new ImageMessage object with the provided values and the default state.
-func NewImageMessage(matrix ifc.MatrixContainer, id, sender, displayname, msgtype, homeserver, fileID string, data []byte, timestamp time.Time) UIMessage {
+func NewImageMessage(matrix ifc.MatrixContainer, id, sender, displayname, msgtype, body, homeserver, fileID string, data []byte, timestamp time.Time) UIMessage {
return &ImageMessage{
newBaseMessage(id, sender, displayname, msgtype, timestamp),
+ body,
homeserver,
fileID,
data,
@@ -67,6 +69,10 @@ func (msg *ImageMessage) NotificationContent() string {
return "Sent an image"
}
+func (msg *ImageMessage) PlainText() string {
+ return fmt.Sprintf("%s: %s", msg.Body, msg.matrix.GetDownloadURL(msg.Homeserver, msg.FileID))
+}
+
func (msg *ImageMessage) updateData() {
defer debug.Recover()
debug.Print("Loading image:", msg.Homeserver, msg.FileID)
@@ -86,11 +92,16 @@ func (msg *ImageMessage) Path() string {
// CalculateBuffer generates the internal buffer for this message that consists
// of the text of this message split into lines at most as wide as the width
// parameter.
-func (msg *ImageMessage) CalculateBuffer(width int) {
+func (msg *ImageMessage) CalculateBuffer(bare bool, width int) {
if width < 2 {
return
}
+ if bare {
+ msg.calculateBufferWithText(bare, tstring.NewTString(msg.PlainText()), width)
+ return
+ }
+
image, err := ansimage.NewScaledFromReader(bytes.NewReader(msg.data), 0, width, color.Black)
if err != nil {
msg.buffer = []tstring.TString{tstring.NewColorTString("Failed to display image", tcell.ColorRed)}
@@ -100,9 +111,10 @@ func (msg *ImageMessage) CalculateBuffer(width int) {
msg.buffer = image.Render()
msg.prevBufferWidth = width
+ msg.prevBareMode = false
}
// RecalculateBuffer calculates the buffer again with the previously provided width.
func (msg *ImageMessage) RecalculateBuffer() {
- msg.CalculateBuffer(msg.prevBufferWidth)
+ msg.CalculateBuffer(msg.prevBareMode, msg.prevBufferWidth)
}