Reload view when new thread is created
This commit is contained in:
parent
14dae825e3
commit
69db448dd3
@ -195,6 +195,17 @@ func (c *Chat) AddReply(parentID string, message Message) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsNewThread check whether a message that is going to be added as
|
||||||
|
// a child to a parent message, is the first one or not
|
||||||
|
func (c *Chat) IsNewThread(parentID string) bool {
|
||||||
|
if parent, ok := c.Messages[parentID]; ok {
|
||||||
|
if len(parent.Messages) > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// ClearMessages clear the c.Messages
|
// ClearMessages clear the c.Messages
|
||||||
func (c *Chat) ClearMessages() {
|
func (c *Chat) ClearMessages() {
|
||||||
c.Messages = make(map[string]Message)
|
c.Messages = make(map[string]Message)
|
||||||
|
@ -138,7 +138,7 @@ func messageHandler(ctx *context.AppContext) {
|
|||||||
var threadTimestamp string
|
var threadTimestamp string
|
||||||
if ev.ThreadTimestamp != "" {
|
if ev.ThreadTimestamp != "" {
|
||||||
threadTimestamp = ev.ThreadTimestamp
|
threadTimestamp = ev.ThreadTimestamp
|
||||||
} else if ev.PreviousMessage.ThreadTimestamp != "" {
|
} else if ev.PreviousMessage != nil && ev.PreviousMessage.ThreadTimestamp != "" {
|
||||||
threadTimestamp = ev.PreviousMessage.ThreadTimestamp
|
threadTimestamp = ev.PreviousMessage.ThreadTimestamp
|
||||||
} else {
|
} else {
|
||||||
threadTimestamp = ""
|
threadTimestamp = ""
|
||||||
@ -147,15 +147,18 @@ func messageHandler(ctx *context.AppContext) {
|
|||||||
// When timestamp isn't set this is a thread reply,
|
// When timestamp isn't set this is a thread reply,
|
||||||
// handle as such
|
// handle as such
|
||||||
if threadTimestamp != "" {
|
if threadTimestamp != "" {
|
||||||
ctx.View.Debug.Println(
|
|
||||||
fmt.Sprint("here"),
|
|
||||||
)
|
|
||||||
ctx.View.Chat.AddReply(threadTimestamp, msg)
|
ctx.View.Chat.AddReply(threadTimestamp, msg)
|
||||||
} else if threadTimestamp == "" && ctx.Focus == context.ChatFocus {
|
} else if threadTimestamp == "" && ctx.Focus == context.ChatFocus {
|
||||||
ctx.View.Chat.AddMessage(msg)
|
ctx.View.Chat.AddMessage(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
termui.Render(ctx.View.Chat)
|
// we (mis)use actionChangeChannel, to rerender, the
|
||||||
|
// view when a new thread has been started
|
||||||
|
if ctx.View.Chat.IsNewThread(threadTimestamp) {
|
||||||
|
actionChangeChannel(ctx)
|
||||||
|
} else {
|
||||||
|
termui.Render(ctx.View.Chat)
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: set Chat.Offset to 0, to automatically scroll
|
// TODO: set Chat.Offset to 0, to automatically scroll
|
||||||
// down?
|
// down?
|
||||||
|
Loading…
Reference in New Issue
Block a user