aboutsummaryrefslogtreecommitdiff
path: root/ui/message-view.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/message-view.go')
-rw-r--r--ui/message-view.go26
1 files changed, 23 insertions, 3 deletions
diff --git a/ui/message-view.go b/ui/message-view.go
index 6ee92f5..b6b7ee4 100644
--- a/ui/message-view.go
+++ b/ui/message-view.go
@@ -171,7 +171,7 @@ func (view *MessageView) AddMessage(ifcMessage ifc.Message, direction ifc.Messag
view.updateWidestSender(message.Sender())
_, _, width, _ := view.GetRect()
- bare := view.parent.parent.bareDisplay
+ bare := view.parent.parent.bareMessages
if !bare {
width -= view.TimestampWidth + TimestampSenderGap + view.widestSender + SenderMessageGap
}
@@ -264,7 +264,7 @@ func (view *MessageView) replaceBuffer(original messages.UIMessage, new messages
func (view *MessageView) recalculateBuffers() {
_, _, width, height := view.GetRect()
- bareMode := view.parent.parent.bareDisplay
+ bareMode := view.parent.parent.bareMessages
if !bareMode {
width -= view.TimestampWidth + TimestampSenderGap + view.widestSender + SenderMessageGap
}
@@ -456,6 +456,26 @@ func (view *MessageView) getIndexOffset(screen tcell.Screen, height, messageX in
return
}
+func (view *MessageView) CapturePlaintext(height int) string {
+ var buf strings.Builder
+ indexOffset := view.TotalHeight() - view.ScrollOffset - height
+ var prevMessage messages.UIMessage
+ for line := 0; line < height; line++ {
+ index := indexOffset + line
+ if index < 0 {
+ continue
+ }
+
+ meta := view.metaBuffer[index]
+ message, ok := meta.(messages.UIMessage)
+ if ok && message != prevMessage {
+ fmt.Fprintf(&buf, "%s <%s> %s\n", message.FormatTime(), message.Sender(), message.PlainText())
+ prevMessage = message
+ }
+ }
+ return buf.String()
+}
+
func (view *MessageView) Draw(screen tcell.Screen) {
x, y, _, height := view.GetRect()
view.recalculateBuffers()
@@ -469,7 +489,7 @@ func (view *MessageView) Draw(screen tcell.Screen) {
messageX := usernameX + view.widestSender + SenderMessageGap
separatorX := usernameX + view.widestSender + SenderSeparatorGap
- bareMode := view.parent.parent.bareDisplay
+ bareMode := view.parent.parent.bareMessages
if bareMode {
messageX = 0
}