Add initial support for rendering replies

This commit is contained in:
Tulir Asokan
2019-06-17 13:46:02 +03:00
parent fe439f076a
commit b76c301145
8 changed files with 80 additions and 33 deletions

View File

@ -54,6 +54,7 @@ type UIMessage struct {
State event.OutgoingState
IsHighlight bool
IsService bool
Edited bool
Source json.RawMessage
ReplyTo *UIMessage
Renderer MessageRenderer
@ -80,6 +81,7 @@ func newUIMessage(evt *event.Event, displayname string, renderer MessageRenderer
State: evt.Gomuks.OutgoingState,
IsHighlight: false,
IsService: false,
Edited: len(evt.Gomuks.Edits) > 0,
Source: evt.Content.VeryRaw,
Renderer: renderer,
}
@ -231,7 +233,6 @@ func (msg *UIMessage) SetID(id string) {
}
func (msg *UIMessage) SetIsHighlight(isHighlight bool) {
// TODO Textmessage cache needs to be cleared
msg.IsHighlight = isHighlight
}

View File

@ -127,8 +127,8 @@ func ParseMessage(matrix ifc.MatrixContainer, room *rooms.Room, evt *event.Event
if len(evt.Content.GetReplyTo()) > 0 {
evt.Content.RemoveReplyFallback()
}
if evt.Content.GetRelatesTo().Type == mautrix.RelReplace && evt.Content.NewContent != nil {
evt.Content = *evt.Content.NewContent
if len(evt.Gomuks.Edits) > 0 {
evt.Content = *evt.Gomuks.Edits[len(evt.Gomuks.Edits)-1].Content.NewContent
}
switch evt.Content.MsgType {
case "m.text", "m.notice", "m.emote":

View File

@ -29,9 +29,10 @@ import (
)
type TextMessage struct {
cache tstring.TString
buffer []tstring.TString
Text string
cache tstring.TString
buffer []tstring.TString
isHighlight bool
Text string
}
// NewTextMessage creates a new UITextMessage object with the provided values and the default state.
@ -85,6 +86,9 @@ func (msg *TextMessage) String() string {
}
func (msg *TextMessage) CalculateBuffer(prefs config.UserPreferences, width int, uiMsg *UIMessage) {
if uiMsg.IsHighlight != msg.isHighlight {
msg.cache = nil
}
msg.buffer = calculateBufferWithText(prefs, msg.getCache(uiMsg), width, uiMsg)
}