aboutsummaryrefslogtreecommitdiff
path: root/ui/types/message.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/types/message.go')
-rw-r--r--ui/types/message.go29
1 files changed, 27 insertions, 2 deletions
diff --git a/ui/types/message.go b/ui/types/message.go
index e6ded4a..5cbc61d 100644
--- a/ui/types/message.go
+++ b/ui/types/message.go
@@ -17,6 +17,7 @@
package types
import (
+ "fmt"
"regexp"
"strings"
@@ -26,13 +27,15 @@ import (
type Message struct {
BasicMeta
+ Type string
ID string
Text string
+ sending bool
buffer []string
prevBufferWidth int
}
-func NewMessage(id, sender, text, timestamp, date string, senderColor tcell.Color) *Message {
+func NewMessage(id, sender, msgtype, text, timestamp, date string, senderColor tcell.Color) *Message {
return &Message{
BasicMeta: BasicMeta{
Sender: sender,
@@ -42,9 +45,11 @@ func NewMessage(id, sender, text, timestamp, date string, senderColor tcell.Colo
TextColor: tcell.ColorDefault,
TimestampColor: tcell.ColorDefault,
},
+ Type: msgtype,
Text: text,
ID: id,
prevBufferWidth: 0,
+ sending: false,
}
}
@@ -65,7 +70,11 @@ func (message *Message) CalculateBuffer(width int) {
return
}
message.buffer = []string{}
- forcedLinebreaks := strings.Split(message.Text, "\n")
+ text := message.Text
+ if message.Type == "m.emote" {
+ text = fmt.Sprintf("* %s %s", message.Sender, message.Text)
+ }
+ forcedLinebreaks := strings.Split(text, "\n")
newlines := 0
for _, str := range forcedLinebreaks {
if len(str) == 0 && newlines < 1 {
@@ -94,6 +103,22 @@ func (message *Message) CalculateBuffer(width int) {
message.prevBufferWidth = width
}
+func (message *Message) GetDisplaySender() string {
+ if message.sending {
+ return "Sending..."
+ }
+ switch message.Type {
+ case "m.emote":
+ return ""
+ default:
+ return message.Sender
+ }
+}
+
+func (message *Message) SetIsSending(sending bool) {
+ message.sending = sending
+}
+
func (message *Message) RecalculateBuffer() {
message.CalculateBuffer(message.prevBufferWidth)
}