commands.go

 1package tui
 2
 3import (
 4	"smoothie/tui/bubbles/commits"
 5	"smoothie/tui/bubbles/selection"
 6
 7	tea "github.com/charmbracelet/bubbletea"
 8)
 9
10type windowMsg struct{}
11type errMsg struct{ err error }
12
13func (e errMsg) Error() string {
14	return e.err.Error()
15}
16
17func (b *Bubble) windowChangesCmd() tea.Msg {
18	w := <-b.windowChanges
19	b.width = w.Width
20	b.height = w.Height
21	return windowMsg{}
22}
23
24func (b *Bubble) getRepoCmd(name string) tea.Cmd {
25	return func() tea.Msg {
26		r, err := b.repoSource.GetRepo(name)
27		if err != nil {
28			return errMsg{err}
29		}
30		b.readmeViewport.Viewport.GotoTop()
31		b.readmeViewport.Viewport.Height = b.height - verticalPadding - viewportHeightConstant
32		b.readmeViewport.Viewport.Width = boxLeftWidth - 2
33		b.readmeViewport.Viewport.SetContent(r.Readme)
34		b.boxes[1] = b.readmeViewport
35		b.activeBox = 1
36		return nil
37	}
38}
39
40func (b *Bubble) loadGitCmd() tea.Msg {
41	b.repos = b.repoSource.AllRepos()
42	rs := make([]string, 0)
43	for _, r := range b.repos {
44		rs = append(rs, r.Name)
45	}
46	b.repoSelect = selection.NewBubble(rs)
47	b.boxes[0] = b.repoSelect
48	b.commitsLog = commits.NewBubble(
49		b.height-verticalPadding-2,
50		boxRightWidth-horizontalPadding-2,
51		b.repoSource.GetCommits(200),
52	)
53	b.boxes[1] = b.commitsLog
54	b.activeBox = 0
55	b.state = loadedState
56	return nil
57}