reset tab message
This commit is contained in:
parent
d4f96c6cde
commit
68c32ba962
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ run-api:
|
||||||
go run ./cmd/api-service/service.go -apikey localOnly
|
go run ./cmd/api-service/service.go -apikey localOnly
|
||||||
|
|
||||||
run-tui:
|
run-tui:
|
||||||
go run ./cmd/terminal-client/main.go
|
EMDB_BASE_URL=http://localhost:8085/ EMDB_API_KEY=hoi go run ./cmd/terminal-client/main.go
|
||||||
|
|
||||||
build-api:
|
build-api:
|
||||||
go build -o emdb-api ./cmd/api-service/service.go
|
go build -o emdb-api ./cmd/api-service/service.go
|
||||||
|
|
|
@ -15,7 +15,7 @@ func main() {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
emdb := client.NewEMDB("https://emdb.ewintr.nl", os.Getenv("EMDB_API_KEY"))
|
emdb := client.NewEMDB(os.Getenv("EMDB_BASE_URL"), os.Getenv("EMDB_API_KEY"))
|
||||||
|
|
||||||
p, err := tui.New(emdb, tmdb, logger)
|
p, err := tui.New(emdb, tmdb, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -64,20 +64,21 @@ func (m baseModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
tmdbTab, cmd = NewTabTMDB(m.emdb, m.tmdb, m.logger)
|
tmdbTab, cmd = NewTabTMDB(m.emdb, m.tmdb, m.logger)
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
m.tabs.AddTab("emdb", "EMDB", emdbTab)
|
m.tabs.AddTab("emdb", "Watched movies", emdbTab)
|
||||||
m.tabs.AddTab("tmdb", "TMDB", tmdbTab)
|
m.tabs.AddTab("tmdb", "TMDB", tmdbTab)
|
||||||
m.initialized = true
|
m.initialized = true
|
||||||
}
|
}
|
||||||
m.Log(fmt.Sprintf("new window size: %dx%d", msg.Width, msg.Height))
|
m.Log(fmt.Sprintf("new window size: %dx%d", msg.Width, msg.Height))
|
||||||
m.setSize()
|
m.setSize()
|
||||||
tabSize := TabSizeMsgType{
|
tabSize := TabSizeMsg{
|
||||||
Width: m.contentSize.Width,
|
Width: m.contentSize.Width,
|
||||||
Height: m.contentSize.Height,
|
Height: m.contentSize.Height,
|
||||||
}
|
}
|
||||||
cmds = append(cmds, m.tabs.Update(tabSize))
|
cmds = append(cmds, m.tabs.Update(tabSize))
|
||||||
case NewMovie:
|
case NewMovie:
|
||||||
m.Log(fmt.Sprintf("imported movie %s", msg.m.Title))
|
m.Log(fmt.Sprintf("imported movie %s", msg.m.Title))
|
||||||
cmd = m.tabs.Update(msg)
|
m.tabs.Select("emdb")
|
||||||
|
cmds = append(cmds, FetchMovieList(m.emdb))
|
||||||
case error:
|
case error:
|
||||||
m.Log(fmt.Sprintf("ERROR: %s", msg.Error()))
|
m.Log(fmt.Sprintf("ERROR: %s", msg.Error()))
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -39,7 +39,7 @@ func (m tabEMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
var cmds []tea.Cmd
|
var cmds []tea.Cmd
|
||||||
|
|
||||||
switch msg := msg.(type) {
|
switch msg := msg.(type) {
|
||||||
case TabSizeMsgType:
|
case TabSizeMsg:
|
||||||
if !m.initialized {
|
if !m.initialized {
|
||||||
m.initialized = true
|
m.initialized = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,15 @@ import (
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type TabSizeMsg tea.WindowSizeMsg
|
||||||
|
type TabResetMsg string
|
||||||
|
|
||||||
type TabSet struct {
|
type TabSet struct {
|
||||||
active int
|
active int
|
||||||
order []string
|
order []string
|
||||||
title map[string]string
|
title map[string]string
|
||||||
tabs map[string]tea.Model
|
tabs map[string]tea.Model
|
||||||
size TabSizeMsgType
|
size TabSizeMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTabSet() *TabSet {
|
func NewTabSet() *TabSet {
|
||||||
|
@ -57,12 +60,16 @@ func (t *TabSet) Update(msg tea.Msg) tea.Cmd {
|
||||||
var cmds []tea.Cmd
|
var cmds []tea.Cmd
|
||||||
|
|
||||||
switch msg.(type) {
|
switch msg.(type) {
|
||||||
case TabSizeMsgType:
|
case TabSizeMsg:
|
||||||
for _, name := range t.order {
|
for _, name := range t.order {
|
||||||
t.tabs[name], cmd = t.tabs[name].Update(msg)
|
t.tabs[name], cmd = t.tabs[name].Update(msg)
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
}
|
}
|
||||||
t.size = msg.(TabSizeMsgType)
|
t.size = msg.(TabSizeMsg)
|
||||||
|
case TabResetMsg:
|
||||||
|
name := string(msg.(TabResetMsg))
|
||||||
|
t.tabs[name], cmd = t.tabs[name].Update(msg)
|
||||||
|
|
||||||
//case ImportMovieMsg:
|
//case ImportMovieMsg:
|
||||||
// t.Select("emdb")
|
// t.Select("emdb")
|
||||||
// t.tabs["emdb"], cmd = t.tabs["emdb"].Update(msg)
|
// t.tabs["emdb"], cmd = t.tabs["emdb"].Update(msg)
|
||||||
|
|
|
@ -38,25 +38,28 @@ func (m tabTMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
var cmds []tea.Cmd
|
var cmds []tea.Cmd
|
||||||
|
|
||||||
switch msg := msg.(type) {
|
switch msg := msg.(type) {
|
||||||
case TabSizeMsgType:
|
case TabSizeMsg:
|
||||||
if !m.initialized {
|
if !m.initialized {
|
||||||
m.initialModel(msg.Width, msg.Height)
|
m.initialModel(msg.Width, msg.Height)
|
||||||
}
|
}
|
||||||
m.initialized = true
|
m.initialized = true
|
||||||
m.searchResults.SetSize(msg.Width, msg.Height)
|
m.searchResults.SetSize(msg.Width, msg.Height)
|
||||||
|
case TabResetMsg:
|
||||||
|
m.searchInput.SetValue("")
|
||||||
|
m.searchResults.SetItems([]list.Item{})
|
||||||
|
m.searchInput.Focus()
|
||||||
|
m.focused = "search"
|
||||||
case tea.KeyMsg:
|
case tea.KeyMsg:
|
||||||
switch msg.String() {
|
switch msg.String() {
|
||||||
case "enter":
|
case "enter":
|
||||||
switch m.focused {
|
switch m.focused {
|
||||||
case "search":
|
case "search":
|
||||||
cmds = append(cmds, SearchTMDB(m.tmdb, m.searchInput.Value()))
|
cmds = append(cmds, m.SearchTMDBCmd(m.searchInput.Value()))
|
||||||
m.searchInput.Blur()
|
m.searchInput.Blur()
|
||||||
m.Log("search tmdb...")
|
m.Log("search tmdb...")
|
||||||
case "result":
|
case "result":
|
||||||
movie := m.searchResults.SelectedItem().(Movie)
|
movie := m.searchResults.SelectedItem().(Movie)
|
||||||
m.Log(fmt.Sprintf("selected movie %s", movie.Title))
|
cmds = append(cmds, m.ImportMovieCmd(movie), m.ResetCmd())
|
||||||
cmds = append(cmds, ImportMovie(m.emdb, movie))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case Movies:
|
case Movies:
|
||||||
|
@ -99,9 +102,9 @@ func (m *tabTMDB) initialModel(width, height int) {
|
||||||
m.focused = "search"
|
m.focused = "search"
|
||||||
}
|
}
|
||||||
|
|
||||||
func SearchTMDB(tmdb *client.TMDB, query string) tea.Cmd {
|
func (m *tabTMDB) SearchTMDBCmd(query string) tea.Cmd {
|
||||||
return func() tea.Msg {
|
return func() tea.Msg {
|
||||||
tms, err := tmdb.Search(query)
|
tms, err := m.tmdb.Search(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -109,9 +112,9 @@ func SearchTMDB(tmdb *client.TMDB, query string) tea.Cmd {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ImportMovie(emdb *client.EMDB, movie Movie) tea.Cmd {
|
func (m *tabTMDB) ImportMovieCmd(movie Movie) tea.Cmd {
|
||||||
return func() tea.Msg {
|
return func() tea.Msg {
|
||||||
newMovie, err := emdb.AddMovie(movie.m)
|
newMovie, err := m.emdb.AddMovie(movie.m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -119,3 +122,9 @@ func ImportMovie(emdb *client.EMDB, movie Movie) tea.Cmd {
|
||||||
return NewMovie(Movie{m: newMovie})
|
return NewMovie(Movie{m: newMovie})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *tabTMDB) ResetCmd() tea.Cmd {
|
||||||
|
return func() tea.Msg {
|
||||||
|
return TabResetMsg("tmdb")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -34,7 +34,6 @@ func NewLogger() *Logger {
|
||||||
func (l *Logger) SetProgram(p *tea.Program) { l.p = p }
|
func (l *Logger) SetProgram(p *tea.Program) { l.p = p }
|
||||||
func (l *Logger) Log(s string) { l.Lines = append(l.Lines, s) }
|
func (l *Logger) Log(s string) { l.Lines = append(l.Lines, s) }
|
||||||
|
|
||||||
type TabSizeMsgType tea.WindowSizeMsg
|
|
||||||
type NewMovie Movie
|
type NewMovie Movie
|
||||||
|
|
||||||
func New(emdb *client.EMDB, tmdb *client.TMDB, logger *Logger) (*tea.Program, error) {
|
func New(emdb *client.EMDB, tmdb *client.TMDB, logger *Logger) (*tea.Program, error) {
|
||||||
|
|
Loading…
Reference in New Issue