1package tui
 2
 3import (
 4	"smoothie/tui/bubbles/commits"
 5	"smoothie/tui/bubbles/repo"
 6	"smoothie/tui/bubbles/selection"
 7
 8	tea "github.com/charmbracelet/bubbletea"
 9)
10
11type windowMsg struct{}
12type errMsg struct{ err error }
13
14func (e errMsg) Error() string {
15	return e.err.Error()
16}
17
18func (b *Bubble) windowChangesCmd() tea.Msg {
19	w := <-b.windowChanges
20	b.width = w.Width
21	b.height = w.Height
22	return windowMsg{}
23}
24
25func (b *Bubble) loadGitCmd() tea.Msg {
26	b.repos = b.repoSource.AllRepos()
27	mes := make([]MenuEntry, 0)
28	rs := make([]string, 0)
29	for _, me := range b.config.Menu {
30		mes = append(mes, me)
31	}
32	if b.config.ShowAllRepos {
33	OUTER:
34		for _, r := range b.repos {
35			for _, me := range mes {
36				if r.Name == me.Repo {
37					continue OUTER
38				}
39			}
40			mes = append(mes, MenuEntry{Name: r.Name, Repo: r.Name})
41		}
42	}
43	b.repoMenu = mes
44	for _, me := range mes {
45		rs = append(rs, me.Name)
46	}
47	b.repoSelect = selection.NewBubble(rs)
48	b.boxes[0] = b.repoSelect
49	b.commitsLog = commits.NewBubble(
50		b.height-verticalPadding-2,
51		boxRightWidth-horizontalPadding-2,
52		b.repoSource.GetCommits(200),
53	)
54	msg := b.getRepoCmd("config")()
55	b.activeBox = 0
56	b.state = loadedState
57	return msg
58}
59
60func (b *Bubble) getRepoCmd(name string) tea.Cmd {
61	var tmplConfig *Config
62	if name == "config" {
63		tmplConfig = b.config
64	}
65	h := b.height - verticalPadding - viewportHeightConstant
66	w := boxRightWidth - 2
67	rb := repo.NewBubble(b.repoSource, name, w, h, tmplConfig)
68	b.boxes[1] = rb
69	return rb.Init()
70}