ui.go

 1package ui
 2
 3import (
 4	"github.com/charmbracelet/bubbles/key"
 5	tea "github.com/charmbracelet/bubbletea"
 6	appCfg "github.com/charmbracelet/soft-serve/config"
 7	"github.com/charmbracelet/soft-serve/ui/keymap"
 8)
 9
10type Session interface {
11	Send(tea.Msg)
12	Config() *appCfg.Config
13	Width() int
14	Height() int
15	InitialRepo() string
16}
17
18type UI struct {
19	s    Session
20	keys *keymap.KeyMap
21}
22
23func New(s Session) *UI {
24	ui := &UI{
25		s:    s,
26		keys: keymap.DefaultKeyMap(),
27	}
28	return ui
29}
30
31func (ui *UI) Init() tea.Cmd {
32	return nil
33}
34
35func (ui *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
36	cmds := make([]tea.Cmd, 0)
37	switch msg := msg.(type) {
38	case tea.KeyMsg:
39		switch {
40		case key.Matches(msg, ui.keys.Quit):
41			return ui, tea.Quit
42		}
43	}
44	return ui, tea.Batch(cmds...)
45}
46
47func (ui *UI) View() string {
48	return ""
49}