Fixes to message/conversation handling in tui chat view
This set of changes fixes root/child message cycling and ensures all database operations happen within a `tea.Cmd`
This commit is contained in:
@@ -36,13 +36,29 @@ type (
|
||||
// a special case of common.MsgError that stops the response waiting animation
|
||||
msgResponseError error
|
||||
// sent on each completed reply
|
||||
msgAssistantReply models.Message
|
||||
msgResponse models.Message
|
||||
// sent when a conversation is (re)loaded
|
||||
msgConversationLoaded *models.Conversation
|
||||
// sent when a new conversation title is set
|
||||
msgConversationTitleChanged string
|
||||
msgConversationLoaded struct {
|
||||
conversation *models.Conversation
|
||||
rootMessages []models.Message
|
||||
}
|
||||
// sent when a new conversation title generated
|
||||
msgConversationTitleGenerated string
|
||||
// sent when a conversation's messages are laoded
|
||||
msgMessagesLoaded []models.Message
|
||||
// sent when the conversation has been persisted, triggers a reload of contents
|
||||
msgConversationPersisted struct {
|
||||
conversation *models.Conversation
|
||||
messages []models.Message
|
||||
}
|
||||
// sent when the given message is made the new selected reply of its parent
|
||||
msgSelectedReplyCycled *models.Message
|
||||
// sent when the given message is made the new selected root of the current conversation
|
||||
msgSelectedRootCycled *models.Message
|
||||
// sent when a message's contents are updated and saved
|
||||
msgMessageUpdated *models.Message
|
||||
// sent when a message is cloned, with the cloned message
|
||||
msgMessageCloned *models.Message
|
||||
)
|
||||
|
||||
type Model struct {
|
||||
@@ -141,7 +157,7 @@ func Chat(state shared.State) Model {
|
||||
|
||||
func (m Model) Init() tea.Cmd {
|
||||
return tea.Batch(
|
||||
m.waitForChunk(),
|
||||
m.waitForReply(),
|
||||
m.waitForResponseChunk(),
|
||||
m.waitForResponse(),
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user