summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/components/dialog
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-18 21:24:35 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:42:29 +0200
commit72afeb9f54cee8e248093a52ac0779441c79aea3 (patch)
tree70f5966bcf2cb8a6186780ea5b22a3515bc8ee22 /internal/tui/components/dialog
parent333ea6ec4b2abfc2c1a9c3f6b0918ca5d296347f (diff)
downloadopencode-72afeb9f54cee8e248093a52ac0779441c79aea3.tar.gz
opencode-72afeb9f54cee8e248093a52ac0779441c79aea3.zip
small fixes
Diffstat (limited to 'internal/tui/components/dialog')
-rw-r--r--internal/tui/components/dialog/permission.go22
-rw-r--r--internal/tui/components/dialog/session.go48
2 files changed, 37 insertions, 33 deletions
diff --git a/internal/tui/components/dialog/permission.go b/internal/tui/components/dialog/permission.go
index f83472e68..1f8df21a0 100644
--- a/internal/tui/components/dialog/permission.go
+++ b/internal/tui/components/dialog/permission.go
@@ -40,7 +40,8 @@ type PermissionDialogCmp interface {
}
type permissionsMapping struct {
- LeftRight key.Binding
+ Left key.Binding
+ Right key.Binding
EnterSpace key.Binding
Allow key.Binding
AllowSession key.Binding
@@ -49,9 +50,13 @@ type permissionsMapping struct {
}
var permissionsKeys = permissionsMapping{
- LeftRight: key.NewBinding(
- key.WithKeys("left", "right"),
- key.WithHelp("←/→", "switch options"),
+ Left: key.NewBinding(
+ key.WithKeys("left"),
+ key.WithHelp("←", "switch options"),
+ ),
+ Right: key.NewBinding(
+ key.WithKeys("right"),
+ key.WithHelp("→", "switch options"),
),
EnterSpace: key.NewBinding(
key.WithKeys("enter", " "),
@@ -104,21 +109,18 @@ func (p *permissionDialogCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
p.diffCache = make(map[string]string)
case tea.KeyMsg:
switch {
- case key.Matches(msg, permissionsKeys.LeftRight) || key.Matches(msg, permissionsKeys.Tab):
- // Change selected option
+ case key.Matches(msg, permissionsKeys.Right) || key.Matches(msg, permissionsKeys.Tab):
p.selectedOption = (p.selectedOption + 1) % 3
return p, nil
+ case key.Matches(msg, permissionsKeys.Left):
+ p.selectedOption = (p.selectedOption + 2) % 3
case key.Matches(msg, permissionsKeys.EnterSpace):
- // Select current option
return p, p.selectCurrentOption()
case key.Matches(msg, permissionsKeys.Allow):
- // Select Allow
return p, util.CmdHandler(PermissionResponseMsg{Action: PermissionAllow, Permission: p.permission})
case key.Matches(msg, permissionsKeys.AllowSession):
- // Select Allow for session
return p, util.CmdHandler(PermissionResponseMsg{Action: PermissionAllowForSession, Permission: p.permission})
case key.Matches(msg, permissionsKeys.Deny):
- // Select Deny
return p, util.CmdHandler(PermissionResponseMsg{Action: PermissionDeny, Permission: p.permission})
default:
// Pass other keys to viewport
diff --git a/internal/tui/components/dialog/session.go b/internal/tui/components/dialog/session.go
index d8c859c49..060875f91 100644
--- a/internal/tui/components/dialog/session.go
+++ b/internal/tui/components/dialog/session.go
@@ -27,20 +27,20 @@ type SessionDialog interface {
}
type sessionDialogCmp struct {
- sessions []session.Session
- selectedIdx int
- width int
- height int
+ sessions []session.Session
+ selectedIdx int
+ width int
+ height int
selectedSessionID string
}
type sessionKeyMap struct {
- Up key.Binding
- Down key.Binding
- Enter key.Binding
- Escape key.Binding
- J key.Binding
- K key.Binding
+ Up key.Binding
+ Down key.Binding
+ Enter key.Binding
+ Escape key.Binding
+ J key.Binding
+ K key.Binding
}
var sessionKeys = sessionKeyMap{
@@ -128,7 +128,7 @@ func (s *sessionDialogCmp) View() string {
// Build the session list
sessionItems := make([]string, 0, maxVisibleSessions)
startIdx := 0
-
+
// If we have more sessions than can be displayed, adjust the start index
if len(s.sessions) > maxVisibleSessions {
// Center the selected item when possible
@@ -145,30 +145,31 @@ func (s *sessionDialogCmp) View() string {
for i := startIdx; i < endIdx; i++ {
sess := s.sessions[i]
itemStyle := styles.BaseStyle.Width(maxWidth)
-
+
if i == s.selectedIdx {
itemStyle = itemStyle.
Background(styles.PrimaryColor).
Foreground(styles.Background).
Bold(true)
}
-
+
sessionItems = append(sessionItems, itemStyle.Padding(0, 1).Render(sess.Title))
}
title := styles.BaseStyle.
Foreground(styles.PrimaryColor).
Bold(true).
+ Width(maxWidth).
Padding(0, 1).
Render("Switch Session")
content := lipgloss.JoinVertical(
lipgloss.Left,
title,
- styles.BaseStyle.Render(""),
- lipgloss.JoinVertical(lipgloss.Left, sessionItems...),
- styles.BaseStyle.Render(""),
- styles.BaseStyle.Foreground(styles.ForgroundDim).Render("↑/k: up ↓/j: down enter: select esc: cancel"),
+ styles.BaseStyle.Width(maxWidth).Render(""),
+ styles.BaseStyle.Width(maxWidth).Render(lipgloss.JoinVertical(lipgloss.Left, sessionItems...)),
+ styles.BaseStyle.Width(maxWidth).Render(""),
+ styles.BaseStyle.Width(maxWidth).Padding(0, 1).Foreground(styles.ForgroundDim).Render("↑/k: up ↓/j: down enter: select esc: cancel"),
)
return styles.BaseStyle.Padding(1, 2).
@@ -185,7 +186,7 @@ func (s *sessionDialogCmp) BindingKeys() []key.Binding {
func (s *sessionDialogCmp) SetSessions(sessions []session.Session) {
s.sessions = sessions
-
+
// If we have a selected session ID, find its index
if s.selectedSessionID != "" {
for i, sess := range sessions {
@@ -195,14 +196,14 @@ func (s *sessionDialogCmp) SetSessions(sessions []session.Session) {
}
}
}
-
+
// Default to first session if selected not found
s.selectedIdx = 0
}
func (s *sessionDialogCmp) SetSelectedSession(sessionID string) {
s.selectedSessionID = sessionID
-
+
// Update the selected index if sessions are already loaded
if len(s.sessions) > 0 {
for i, sess := range s.sessions {
@@ -217,8 +218,9 @@ func (s *sessionDialogCmp) SetSelectedSession(sessionID string) {
// NewSessionDialogCmp creates a new session switching dialog
func NewSessionDialogCmp() SessionDialog {
return &sessionDialogCmp{
- sessions: []session.Session{},
- selectedIdx: 0,
+ sessions: []session.Session{},
+ selectedIdx: 0,
selectedSessionID: "",
}
-} \ No newline at end of file
+}
+