WhspBrd/internal/tui/sidebar.go
2025-08-16 19:19:12 +02:00

58 lines
1006 B
Go

package tui
import (
"fmt"
"github.com/jroimartin/gocui"
)
// LAYOUT
func layoutSidebar(g *gocui.Gui, maxY int) error {
if v, err := g.SetView("users", 0, 0, 20, maxY-1); err != nil {
if err != gocui.ErrUnknownView {
return err
}
v.Title = "Users"
v.Clear()
for _, u := range users {
fmt.Fprintln(v, u+"\n")
}
}
return nil
}
func updateUsersView(g *gocui.Gui) error {
v, err := g.View("users")
if err != nil {
return err
}
v.Clear()
for i, u := range users {
if i == selectedUserIdx {
fmt.Fprintln(v, fmt.Sprintf(">%s\n", u))
} else {
fmt.Fprintln(v, u+"\n")
}
}
return nil
}
// KEYBINDINGS
func nextContact(g *gocui.Gui, v *gocui.View) error {
if len(users) == 0 {
return nil
}
selectedUserIdx = (selectedUserIdx + 1) % len(users)
return updateUsersView(g)
}
func prevContact(g *gocui.Gui, v *gocui.View) error {
if len(users) == 0 {
return nil
}
selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users)
return updateUsersView(g)
}