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}