diff options
| author | adamdottv <[email protected]> | 2025-06-13 15:56:30 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-13 15:56:33 -0500 |
| commit | 67023bb00710b6a40836800da2eb5cdacc1ee9c1 (patch) | |
| tree | 4c6fce2842956f214b8e39a7465d4444b37d39b0 /packages/tui/internal/page | |
| parent | a316aed4fe973682667a19e6ba550270cf1a9df4 (diff) | |
| download | opencode-67023bb00710b6a40836800da2eb5cdacc1ee9c1.tar.gz opencode-67023bb00710b6a40836800da2eb5cdacc1ee9c1.zip | |
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/page')
| -rw-r--r-- | packages/tui/internal/page/chat.go | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/packages/tui/internal/page/chat.go b/packages/tui/internal/page/chat.go index a117e80f5..d97171e16 100644 --- a/packages/tui/internal/page/chat.go +++ b/packages/tui/internal/page/chat.go @@ -22,6 +22,7 @@ type chatPage struct { messages layout.Container layout layout.FlexLayout completionDialog dialog.CompletionDialog + completionManager *completions.CompletionManager showCompletionDialog bool } @@ -94,13 +95,20 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } if p.showCompletionDialog { + // Get the current text from the editor to determine which provider to use + editorModel := p.editor.GetContent().(interface{ GetValue() string }) + currentInput := editorModel.GetValue() + + provider := p.completionManager.GetProvider(currentInput) + p.completionDialog.SetProvider(provider) + context, contextCmd := p.completionDialog.Update(msg) p.completionDialog = context.(dialog.CompletionDialog) cmds = append(cmds, contextCmd) - // Doesn't forward event if enter key is pressed + // Doesn't forward event if enter key is pressed and there are completions if keyMsg, ok := msg.(tea.KeyMsg); ok { - if keyMsg.String() == "enter" && !p.completionDialog.IsEmpty() { + if keyMsg.String() == "enter" { // && !p.completionDialog.IsEmpty() { return p, tea.Batch(cmds...) } } @@ -149,8 +157,10 @@ func (p *chatPage) View() string { } func NewChatPage(app *app.App) layout.ModelWithView { - cg := completions.NewFileAndFolderContextGroup() - completionDialog := dialog.NewCompletionDialogComponent(cg) + completionManager := completions.NewCompletionManager(app) + initialProvider := completionManager.GetProvider("") + completionDialog := dialog.NewCompletionDialogComponent(initialProvider) + messagesContainer := layout.NewContainer( chat.NewMessagesComponent(app), ) @@ -159,11 +169,13 @@ func NewChatPage(app *app.App) layout.ModelWithView { layout.WithMaxWidth(layout.Current.Container.Width), layout.WithAlignCenter(), ) + return &chatPage{ - app: app, - editor: editorContainer, - messages: messagesContainer, - completionDialog: completionDialog, + app: app, + editor: editorContainer, + messages: messagesContainer, + completionDialog: completionDialog, + completionManager: completionManager, layout: layout.NewFlexLayout( layout.WithPanes(messagesContainer, editorContainer), layout.WithDirection(layout.FlexDirectionVertical), |
