aboutsummaryrefslogtreecommitdiff
path: root/ui/message-view.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2019-04-10 01:42:27 +0300
committerTulir Asokan <tulir@maunium.net>2019-04-10 01:42:27 +0300
commit06c306bee91ce2b7e7b5f32fad7c3f8b5b38d883 (patch)
treec5deabd2e86e3a40d86a7173a1a49c874ad99690 /ui/message-view.go
parentbbde1219479bb257c7bc1f9546bd67e8a151198c (diff)
Fix date change messages and input submit handling
Diffstat (limited to 'ui/message-view.go')
-rw-r--r--ui/message-view.go40
1 files changed, 24 insertions, 16 deletions
diff --git a/ui/message-view.go b/ui/message-view.go
index 87889fb..a2ed029 100644
--- a/ui/message-view.go
+++ b/ui/message-view.go
@@ -120,7 +120,6 @@ func (view *MessageView) AddMessage(ifcMessage ifc.Message, direction MessageDir
return
}
-
var oldMsg messages.UIMessage
var messageExists bool
if oldMsg, messageExists = view.messageIDs[message.ID()]; messageExists {
@@ -141,14 +140,30 @@ func (view *MessageView) AddMessage(ifcMessage ifc.Message, direction MessageDir
}
message.CalculateBuffer(view.config.Preferences, width)
+ makeDateChange := func() messages.UIMessage {
+ dateChange := messages.NewDateChangeMessage(
+ fmt.Sprintf("Date changed to %s", message.FormatDate()))
+ dateChange.CalculateBuffer(view.config.Preferences, width)
+ view.appendBuffer(dateChange)
+ return dateChange
+ }
+
if direction == AppendMessage {
if view.ScrollOffset > 0 {
view.ScrollOffset += message.Height()
}
- view.messages = append(view.messages, message)
+ if len(view.messages) > 0 && !view.messages[len(view.messages)-1].SameDate(message) {
+ view.messages = append(view.messages, makeDateChange(), message)
+ } else {
+ view.messages = append(view.messages, message)
+ }
view.appendBuffer(message)
} else if direction == PrependMessage {
- view.messages = append([]messages.UIMessage{message}, view.messages...)
+ if len(view.messages) > 0 && !view.messages[0].SameDate(message) {
+ view.messages = append([]messages.UIMessage{message, makeDateChange()}, view.messages...)
+ } else {
+ view.messages = append([]messages.UIMessage{message}, view.messages...)
+ }
} else if oldMsg != nil {
view.replaceBuffer(oldMsg, message)
} else {
@@ -156,21 +171,12 @@ func (view *MessageView) AddMessage(ifcMessage ifc.Message, direction MessageDir
debug.PrintStack()
}
- view.messageIDs[message.ID()] = message
+ if len(message.ID()) > 0 {
+ view.messageIDs[message.ID()] = message
+ }
}
func (view *MessageView) appendBuffer(message messages.UIMessage) {
- if len(view.msgBuffer) > 0 {
- prevMeta := view.msgBuffer[len(view.msgBuffer)-1]
- if prevMeta != nil && prevMeta.FormatDate() != message.FormatDate() {
- /* FIXME view.textBuffer = append(view.textBuffer, tstring.NewColorTString(
- fmt.Sprintf("Date changed to %s", message.FormatDate()),
- tcell.ColorGreen))
- view.msgBuffer = append(view.msgBuffer, &messages.BasicMeta{
- BTimestampColor: tcell.ColorDefault, BTextColor: tcell.ColorGreen})*/
- }
- }
-
for i := 0; i < message.Height(); i++ {
view.msgBuffer = append(view.msgBuffer, message)
}
@@ -178,7 +184,9 @@ func (view *MessageView) appendBuffer(message messages.UIMessage) {
}
func (view *MessageView) replaceMessage(original messages.UIMessage, new messages.UIMessage) {
- view.messageIDs[new.ID()] = new
+ if len(new.ID()) > 0 {
+ view.messageIDs[new.ID()] = new
+ }
for index, msg := range view.messages {
if msg == original {
view.messages[index] = new