summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal/page
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-13 15:56:30 -0500
committeradamdottv <[email protected]>2025-06-13 15:56:33 -0500
commit67023bb00710b6a40836800da2eb5cdacc1ee9c1 (patch)
tree4c6fce2842956f214b8e39a7465d4444b37d39b0 /packages/tui/internal/page
parenta316aed4fe973682667a19e6ba550270cf1a9df4 (diff)
downloadopencode-67023bb00710b6a40836800da2eb5cdacc1ee9c1.tar.gz
opencode-67023bb00710b6a40836800da2eb5cdacc1ee9c1.zip
wip: refactoring tui
Diffstat (limited to 'packages/tui/internal/page')
-rw-r--r--packages/tui/internal/page/chat.go28
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),