package editor

import (
	tea "github.com/charmbracelet/bubbletea"
)

func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
	var cmd tea.Cmd

	switch msg := msg.(type) {

	case tea.WindowSizeMsg:
		m.win_h = msg.Height
		m.win_w = msg.Width

		// TODO: Temp, this is lame
		for i := range m.windows {
			m.windows[i].Height = msg.Height
			m.windows[i].Width = msg.Width
		}

	case tea.KeyMsg:
		// TODO: This needs to be removed, but for now its required for the tests.
		// Ctrl+C always quits regardless of mode
		if msg.Type == tea.KeyCtrlC {
			return m, tea.Quit
		}
		cmd = m.input.Handle(m, msg.String())
	}

	// Keep cursor in view after any update
	m.AdjustScroll()

	return m, cmd
}
