Show messages in message view while sending

This commit is contained in:
Tulir Asokan
2018-03-20 19:14:39 +02:00
parent 59cd900301
commit 095b982603
6 changed files with 93 additions and 66 deletions

View File

@ -42,7 +42,7 @@ type MessageView struct {
prevHeight int
prevMsgCount int
messageIDs map[string]bool
messageIDs map[string]*types.Message
messages []*types.Message
textBuffer []string
@ -60,7 +60,7 @@ func NewMessageView() *MessageView {
ScrollOffset: 0,
messages: make([]*types.Message, 0),
messageIDs: make(map[string]bool),
messageIDs: make(map[string]*types.Message),
textBuffer: make([]string, 0),
metaBuffer: make([]types.MessageMeta, 0),
@ -87,15 +87,25 @@ func (view *MessageView) updateWidestSender(sender string) {
}
}
type MessageDirection int
const (
AppendMessage = iota
AppendMessage MessageDirection = iota
PrependMessage
IgnoreMessage
)
func (view *MessageView) AddMessage(message *types.Message, direction int) {
_, messageExists := view.messageIDs[message.ID]
func (view *MessageView) UpdateMessageID(message *types.Message, newID string) {
delete(view.messageIDs, message.ID)
message.ID = newID
view.messageIDs[message.ID] = message
}
func (view *MessageView) AddMessage(message *types.Message, direction MessageDirection) {
msg, messageExists := view.messageIDs[message.ID]
if messageExists {
return
message.CopyTo(msg)
direction = IgnoreMessage
}
view.updateWidestSender(message.Sender)
@ -114,7 +124,7 @@ func (view *MessageView) AddMessage(message *types.Message, direction int) {
view.messages = append([]*types.Message{message}, view.messages...)
}
view.messageIDs[message.ID] = true
view.messageIDs[message.ID] = message
}
func (view *MessageView) appendBuffer(message *types.Message) {

View File

@ -147,6 +147,6 @@ func (view *RoomView) NewMessage(id, sender, text string, timestamp time.Time) *
return view.content.NewMessage(id, sender, text, timestamp)
}
func (view *RoomView) AddMessage(message *types.Message, direction int) {
func (view *RoomView) AddMessage(message *types.Message, direction MessageDirection) {
view.content.AddMessage(message, direction)
}