mirror of
https://github.com/sst/opencode.git
synced 2025-07-24 16:23:43 +00:00
feat(tui): highlight current session in sessions modal (#1093)
This commit is contained in:
parent
a493aec174
commit
20cb7a76af
1 changed files with 22 additions and 1 deletions
|
@ -28,6 +28,7 @@ type SessionDialog interface {
|
|||
type sessionItem struct {
|
||||
title string
|
||||
isDeleteConfirming bool
|
||||
isCurrentSession bool
|
||||
}
|
||||
|
||||
func (s sessionItem) Render(
|
||||
|
@ -42,7 +43,11 @@ func (s sessionItem) Render(
|
|||
if s.isDeleteConfirming {
|
||||
text = "Press again to confirm delete"
|
||||
} else {
|
||||
text = s.title
|
||||
if s.isCurrentSession {
|
||||
text = "● " + s.title
|
||||
} else {
|
||||
text = s.title
|
||||
}
|
||||
}
|
||||
|
||||
truncatedStr := truncate.StringWithTail(text, uint(width-1), "...")
|
||||
|
@ -56,6 +61,14 @@ func (s sessionItem) Render(
|
|||
Foreground(t.BackgroundElement()).
|
||||
Width(width).
|
||||
PaddingLeft(1)
|
||||
} else if s.isCurrentSession {
|
||||
// Different style for current session when selected
|
||||
itemStyle = baseStyle.
|
||||
Background(t.Primary()).
|
||||
Foreground(t.BackgroundElement()).
|
||||
Width(width).
|
||||
PaddingLeft(1).
|
||||
Bold(true)
|
||||
} else {
|
||||
// Normal selection
|
||||
itemStyle = baseStyle.
|
||||
|
@ -70,6 +83,12 @@ func (s sessionItem) Render(
|
|||
itemStyle = baseStyle.
|
||||
Foreground(t.Error()).
|
||||
PaddingLeft(1)
|
||||
} else if s.isCurrentSession {
|
||||
// Highlight current session when not selected
|
||||
itemStyle = baseStyle.
|
||||
Foreground(t.Primary()).
|
||||
PaddingLeft(1).
|
||||
Bold(true)
|
||||
} else {
|
||||
itemStyle = baseStyle.
|
||||
PaddingLeft(1)
|
||||
|
@ -194,6 +213,7 @@ func (s *sessionDialog) updateListItems() {
|
|||
item := sessionItem{
|
||||
title: sess.Title,
|
||||
isDeleteConfirming: s.deleteConfirmation == i,
|
||||
isCurrentSession: s.app.Session != nil && s.app.Session.ID == sess.ID,
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
|
@ -229,6 +249,7 @@ func NewSessionDialog(app *app.App) SessionDialog {
|
|||
items = append(items, sessionItem{
|
||||
title: sess.Title,
|
||||
isDeleteConfirming: false,
|
||||
isCurrentSession: app.Session != nil && app.Session.ID == sess.ID,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue