package tui import ( "fmt" "github.com/jroimartin/gocui" ) var selectedUserIdx int = 0 // 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() updateUsersView(g) } return nil } func updateUsersView(g *gocui.Gui) error { v, err := g.View("users") if err != nil { return err } v.Clear() messages = nil // TODO: If no contacts then error, create some add contacts window or hello to WhspBrd LoadMessages(users[selectedUserIdx]) // TODO: Render profile image of users and change colors of each user maybe? for i, u := range users { // Change Selected User In The TUI Window if i == selectedUserIdx { fmt.Fprintf(v, "%s%s%s\n", Colors.Background(Colors.Base06), u, Colors.Reset) _, y := v.Size() if i == 0 { v.SetOrigin(0, 0) } else { v.SetOrigin(0, i-y+1) } } else { fmt.Fprintln(v, u) } } return nil } // KEYBINDINGS func nextContact(g *gocui.Gui, v *gocui.View) error { if len(users) == 0 { return nil } selectedUserIdx = (selectedUserIdx + 1) % len(users) err := updateUsersView(g) updateChatView(g.Views()[1]) return err } func prevContact(g *gocui.Gui, v *gocui.View) error { if len(users) == 0 { return nil } selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users) err := updateUsersView(g) updateChatView(g.Views()[1]) return err }