aboutsummaryrefslogtreecommitdiff
path: root/ui/messages/imagemessage.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-04-13 21:25:45 +0300
committerTulir Asokan <tulir@maunium.net>2018-04-13 21:25:45 +0300
commit69c163cfe9d353060896403a3e844848d4fd54eb (patch)
tree3b61d43f66a641c462c33620de90ff9d2b2c1047 /ui/messages/imagemessage.go
parent7e5e802e90e38e7b1de025e792e228ac7b329a53 (diff)
Unknown changes that possibly fix and/or break things
Diffstat (limited to 'ui/messages/imagemessage.go')
-rw-r--r--ui/messages/imagemessage.go66
1 files changed, 26 insertions, 40 deletions
diff --git a/ui/messages/imagemessage.go b/ui/messages/imagemessage.go
index 5282d44..2fbf6ae 100644
--- a/ui/messages/imagemessage.go
+++ b/ui/messages/imagemessage.go
@@ -28,16 +28,15 @@ import (
"maunium.net/go/gomuks/interface"
"maunium.net/go/gomuks/lib/ansimage"
"maunium.net/go/gomuks/ui/messages/tstring"
- "maunium.net/go/gomuks/ui/widget"
"maunium.net/go/tcell"
)
func init() {
- gob.Register(&UIImageMessage{})
+ gob.Register(&ImageMessage{})
}
-type UIImageMessage struct {
- UITextMessage
+type ImageMessage struct {
+ BaseMessage
Homeserver string
FileID string
data []byte
@@ -45,20 +44,10 @@ type UIImageMessage struct {
gmx ifc.Gomuks
}
-// NewImageMessage creates a new UIImageMessage object with the provided values and the default state.
+// NewImageMessage creates a new ImageMessage object with the provided values and the default state.
func NewImageMessage(gmx ifc.Gomuks, id, sender, msgtype, homeserver, fileID string, data []byte, timestamp time.Time) UIMessage {
- return &UIImageMessage{
- UITextMessage{
- MsgSender: sender,
- MsgTimestamp: timestamp,
- MsgSenderColor: widget.GetHashColor(sender),
- MsgType: msgtype,
- MsgID: id,
- prevBufferWidth: 0,
- MsgState: ifc.MessageStateDefault,
- MsgIsHighlight: false,
- MsgIsService: false,
- },
+ return &ImageMessage{
+ newBaseMessage(id, sender, msgtype, timestamp),
homeserver,
fileID,
data,
@@ -66,7 +55,7 @@ func NewImageMessage(gmx ifc.Gomuks, id, sender, msgtype, homeserver, fileID str
}
}
-func (msg *UIImageMessage) RegisterGomuks(gmx ifc.Gomuks) {
+func (msg *ImageMessage) RegisterGomuks(gmx ifc.Gomuks) {
msg.gmx = gmx
debug.Print(len(msg.data), msg.data)
@@ -78,7 +67,11 @@ func (msg *UIImageMessage) RegisterGomuks(gmx ifc.Gomuks) {
}
}
-func (msg *UIImageMessage) updateData() {
+func (msg *ImageMessage) NotificationContent() string {
+ return "Sent an image"
+}
+
+func (msg *ImageMessage) updateData() {
debug.Print("Loading image:", msg.Homeserver, msg.FileID)
data, _, _, err := msg.gmx.Matrix().Download(fmt.Sprintf("mxc://%s/%s", msg.Homeserver, msg.FileID))
if err != nil {
@@ -88,39 +81,26 @@ func (msg *UIImageMessage) updateData() {
msg.data = data
}
-func (msg *UIImageMessage) Path() string {
+func (msg *ImageMessage) Path() string {
return msg.gmx.Matrix().GetCachePath(msg.Homeserver, msg.FileID)
}
// CopyFrom replaces the content of this message object with the content of the given object.
-func (msg *UIImageMessage) CopyFrom(from ifc.MessageMeta) {
- msg.MsgSender = from.Sender()
- msg.MsgSenderColor = from.SenderColor()
+func (msg *ImageMessage) CopyFrom(from ifc.MessageMeta) {
+ msg.BaseMessage.CopyFrom(from)
- fromMsg, ok := from.(UIMessage)
+ fromImgMsg, ok := from.(*ImageMessage)
if ok {
- msg.MsgSender = fromMsg.RealSender()
- msg.MsgID = fromMsg.ID()
- msg.MsgType = fromMsg.Type()
- msg.MsgTimestamp = fromMsg.Timestamp()
- msg.MsgState = fromMsg.State()
- msg.MsgIsService = fromMsg.IsService()
- msg.MsgIsHighlight = fromMsg.IsHighlight()
- msg.buffer = nil
-
- fromImgMsg, ok := from.(*UIImageMessage)
- if ok {
- msg.data = fromImgMsg.data
- }
-
- msg.RecalculateBuffer()
+ msg.data = fromImgMsg.data
}
+
+ msg.RecalculateBuffer()
}
// 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 *UIImageMessage) CalculateBuffer(width int) {
+func (msg *ImageMessage) CalculateBuffer(width int) {
if width < 2 {
return
}
@@ -135,3 +115,9 @@ func (msg *UIImageMessage) CalculateBuffer(width int) {
msg.buffer = image.Render()
msg.prevBufferWidth = width
}
+
+// RecalculateBuffer calculates the buffer again with the previously provided width.
+func (msg *ImageMessage) RecalculateBuffer() {
+ msg.CalculateBuffer(msg.prevBufferWidth)
+}
+