Преглед изворни кода

feat: even faster tui init

adamdottv пре 8 месеци
родитељ
комит
b9f894f1e9

+ 2 - 2
packages/tui/internal/components/chat/messages.go

@@ -396,8 +396,8 @@ func NewMessagesComponent(app *app.App) layout.ModelWithView {
 	}
 	s := spinner.New(spinner.WithSpinner(customSpinner))
 
-	vp := viewport.New()          //(0, 0)
-	attachments := viewport.New() //(0, 0)
+	vp := viewport.New()
+	attachments := viewport.New()
 	vp.KeyMap.PageUp = messageKeys.PageUp
 	vp.KeyMap.PageDown = messageKeys.PageDown
 	vp.KeyMap.HalfPageUp = messageKeys.HalfPageUp

+ 20 - 13
packages/tui/internal/components/dialog/complete.go

@@ -141,6 +141,8 @@ func (c *completionDialogComponent) close() tea.Cmd {
 func (c *completionDialogComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	var cmds []tea.Cmd
 	switch msg := msg.(type) {
+	case []CompletionItemI:
+		c.list.SetItems(msg)
 	case tea.KeyMsg:
 		if c.pseudoSearchTextArea.Focused() {
 			if !key.Matches(msg, completionDialogKeys.Complete) {
@@ -155,18 +157,20 @@ func (c *completionDialogComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 				}
 
 				if query != c.query {
-					items, err := c.completionProvider.GetChildEntries(query)
-					if err != nil {
-						// status.Error(err.Error())
-					}
-
-					c.list.SetItems(items)
 					c.query = query
+					cmd = func() tea.Msg {
+						items, err := c.completionProvider.GetChildEntries(query)
+						if err != nil {
+							// status.Error(err.Error())
+						}
+						// c.list.SetItems(items)
+						return items
+					}
+					cmds = append(cmds, cmd)
 				}
 
 				u, cmd := c.list.Update(msg)
 				c.list = u.(list.List[CompletionItemI])
-
 				cmds = append(cmds, cmd)
 			}
 
@@ -254,18 +258,21 @@ func (c *completionDialogComponent) SetProvider(provider CompletionProvider) {
 func NewCompletionDialogComponent(completionProvider CompletionProvider) CompletionDialog {
 	ti := textarea.New()
 
-	items, err := completionProvider.GetChildEntries("")
-	if err != nil {
-		// status.Error(err.Error())
-	}
-
 	li := list.NewListComponent(
-		items,
+		[]CompletionItemI{},
 		7,
 		"No matches",
 		false,
 	)
 
+	go func() {
+		items, err := completionProvider.GetChildEntries("")
+		if err != nil {
+			// status.Error(err.Error())
+		}
+		li.SetItems(items)
+	}()
+
 	return &completionDialogComponent{
 		query:                "",
 		completionProvider:   completionProvider,