package gui import ( "fmt" "os" tea "github.com/charmbracelet/bubbletea" ) type Mode int64 const ( Select Mode = iota Create Draw ) func (m *model) Init() tea.Cmd { // Just return `nil`, which means "no I/O right now, please." return nil } func (m *model) switchMode(mode Mode) { // TODO: initialization stuff switch mode { case Select: m.mode = Select case Draw: m.mode = Draw case Create: m.mode = Create } } func (m *model) cardListToString() string { s := "" for i, card := range m.deck { if _, ok := m.selected[i]; ok { s += fmt.Sprintf("%s [%s]\n", card.Front, card.Back) } } return s } func (m *model) View() string { if m.mode == Draw { return m.viewDraw() } else if m.mode == Create { return m.viewCreate() } // Select is default mode return m.viewSelect() } func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if m.mode == Draw { return m.updateDraw(msg) } else if m.mode == Create { return m.updateCreate(msg) } // Select is default mode return m.updateSelect(msg) } func Run() { initial := initialModel() p := tea.NewProgram(&initial) if err := p.Start(); err != nil { fmt.Printf("Alas, there's been an error: %v", err) os.Exit(1) } }