aboutsummaryrefslogtreecommitdiff
path: root/ui/message-view.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-04-10 19:31:28 +0300
committerTulir Asokan <tulir@maunium.net>2018-04-10 19:31:28 +0300
commit8270bc0322ac262f4b48c92d5fad25cf9634f1bb (patch)
tree8ff85b17f4d2948b8d3bae40738d97ad25f43488 /ui/message-view.go
parentee67c1446cbb3c446d59d4ebd9657a25bf0b702d (diff)
Move event parsing to ui/messages and add image displaying
Diffstat (limited to 'ui/message-view.go')
-rw-r--r--ui/message-view.go28
1 files changed, 18 insertions, 10 deletions
diff --git a/ui/message-view.go b/ui/message-view.go
index 7b18ad8..dd3edb5 100644
--- a/ui/message-view.go
+++ b/ui/message-view.go
@@ -21,7 +21,6 @@ import (
"fmt"
"math"
"os"
- "time"
"github.com/gdamore/tcell"
"maunium.net/go/gomuks/debug"
@@ -72,10 +71,6 @@ func NewMessageView() *MessageView {
}
}
-func (view *MessageView) NewMessage(id, sender, msgtype, text string, timestamp time.Time) messages.UIMessage {
- return messages.NewMessage(id, sender, msgtype, text, timestamp, widget.GetHashColor(sender))
-}
-
func (view *MessageView) SaveHistory(path string) error {
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0600)
if err != nil {
@@ -102,14 +97,23 @@ func (view *MessageView) LoadHistory(path string) (int, error) {
}
defer file.Close()
+ var msgs []messages.UIMessage
+
dec := gob.NewDecoder(file)
- err = dec.Decode(&view.messages)
+ err = dec.Decode(&msgs)
if err != nil {
return -1, err
}
- for _, message := range view.messages {
- view.updateWidestSender(message.Sender())
+ view.messages = make([]messages.UIMessage, len(msgs))
+ indexOffset := 0
+ for index, message := range msgs {
+ if message != nil {
+ view.messages[index-indexOffset] = message
+ view.updateWidestSender(message.Sender())
+ } else {
+ indexOffset++
+ }
}
return len(view.messages), nil
@@ -213,7 +217,7 @@ func (view *MessageView) replaceBuffer(message messages.UIMessage) {
}
view.textBuffer = append(append(view.textBuffer[0:start], message.Buffer()...), view.textBuffer[end:]...)
- if len(message.Buffer()) != end - start + 1 {
+ if len(message.Buffer()) != end-start+1 {
debug.Print(end, "-", start, "!=", len(message.Buffer()))
metaBuffer := view.metaBuffer[0:start]
for range message.Buffer() {
@@ -232,7 +236,11 @@ func (view *MessageView) recalculateBuffers() {
view.textBuffer = []messages.UIString{}
view.metaBuffer = []ifc.MessageMeta{}
view.prevMsgCount = 0
- for _, message := range view.messages {
+ for i, message := range view.messages {
+ if message == nil {
+ debug.Print("O.o found nil message at", i)
+ break
+ }
if recalculateMessageBuffers {
message.CalculateBuffer(width)
}