discordo/internal/ui/chat/keybinds.go

67 lines
1.7 KiB
Go

package chat
import (
"github.com/ayn2op/tview/help"
"github.com/ayn2op/tview/keybind"
)
var _ help.KeyMap = (*Model)(nil)
func (m *Model) ShortHelp() []keybind.Keybind {
short := make([]keybind.Keybind, 0, 16)
if active := m.activeKeyMap(); active != nil {
short = append(short, active.ShortHelp()...)
}
short = append(short, m.baseShortHelp()...)
return short
}
func (m *Model) FullHelp() [][]keybind.Keybind {
full := make([][]keybind.Keybind, 0, 8)
if active := m.activeKeyMap(); active != nil {
full = append(full, active.FullHelp()...)
}
full = append(full, m.baseFullHelp()...)
return full
}
func (m *Model) activeKeyMap() help.KeyMap {
if m.GetVisible(channelsPickerLayerName) {
return m.channelsPicker
}
switch m.app.Focused() {
case m.guildsTree:
return m.guildsTree
case m.messagesList:
return m.messagesList
case m.messageInput:
return m.messageInput
default:
return nil
}
}
func (m *Model) baseShortHelp() []keybind.Keybind {
cfg := m.cfg.Keybinds
short := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
if !m.messageInput.GetDisabled() {
short = append(short, cfg.FocusMessageInput.Keybind)
}
short = append(short, cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind)
return short
}
func (m *Model) baseFullHelp() [][]keybind.Keybind {
cfg := m.cfg.Keybinds
focus := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
if !m.messageInput.GetDisabled() {
focus = append(focus, cfg.FocusMessageInput.Keybind)
}
return [][]keybind.Keybind{
focus,
{cfg.FocusPrevious.Keybind, cfg.FocusNext.Keybind},
{cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind},
{cfg.Logout.Keybind},
}
}