remove config typex
This commit is contained in:
parent
5244285add
commit
bfb3d38092
|
@ -9,7 +9,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
logger := tui.NewLogger()
|
|
||||||
tmdb, err := client.NewTMDB(os.Getenv("TMDB_API_KEY"))
|
tmdb, err := client.NewTMDB(os.Getenv("TMDB_API_KEY"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
@ -17,12 +16,11 @@ func main() {
|
||||||
}
|
}
|
||||||
emdb := client.NewEMDB("https://emdb.ewintr.nl", os.Getenv("EMDB_API_KEY"))
|
emdb := client.NewEMDB("https://emdb.ewintr.nl", os.Getenv("EMDB_API_KEY"))
|
||||||
|
|
||||||
p, err := tui.New(emdb, tmdb, logger)
|
p, err := tui.New(emdb, tmdb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
logger.SetProgram(p)
|
|
||||||
if _, err := p.Run(); err != nil {
|
if _, err := p.Run(); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
@ -4,36 +4,29 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"ewintr.nl/emdb/client"
|
|
||||||
"github.com/charmbracelet/bubbles/viewport"
|
"github.com/charmbracelet/bubbles/viewport"
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
)
|
)
|
||||||
|
|
||||||
type baseModel struct {
|
type baseModel struct {
|
||||||
emdb *client.EMDB
|
|
||||||
tmdb *client.TMDB
|
|
||||||
Tabs []string
|
Tabs []string
|
||||||
TabContent tea.Model
|
TabContent tea.Model
|
||||||
activeTab int
|
activeTab int
|
||||||
initialized bool
|
initialized bool
|
||||||
logger *Logger
|
|
||||||
logViewport viewport.Model
|
logViewport viewport.Model
|
||||||
windowSize tea.WindowSizeMsg
|
windowSize tea.WindowSizeMsg
|
||||||
contentSize tea.WindowSizeMsg
|
contentSize tea.WindowSizeMsg
|
||||||
tabSize tea.WindowSizeMsg
|
tabSize tea.WindowSizeMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBaseModel(emdb *client.EMDB, tmdb *client.TMDB, logger *Logger) (tea.Model, tea.Cmd) {
|
func NewBaseModel() (tea.Model, tea.Cmd) {
|
||||||
logViewport := viewport.New(0, 0)
|
logViewport := viewport.New(0, 0)
|
||||||
logViewport.KeyMap = viewport.KeyMap{}
|
logViewport.KeyMap = viewport.KeyMap{}
|
||||||
|
|
||||||
m := baseModel{
|
m := baseModel{
|
||||||
emdb: emdb,
|
|
||||||
tmdb: tmdb,
|
|
||||||
Tabs: []string{"Erik's movie database", "The movie database"},
|
Tabs: []string{"Erik's movie database", "The movie database"},
|
||||||
logViewport: logViewport,
|
logViewport: logViewport,
|
||||||
logger: logger,
|
|
||||||
}
|
}
|
||||||
m.setSize()
|
m.setSize()
|
||||||
|
|
||||||
|
@ -63,11 +56,11 @@ func (m baseModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
case tea.WindowSizeMsg:
|
case tea.WindowSizeMsg:
|
||||||
m.windowSize = msg
|
m.windowSize = msg
|
||||||
if !m.initialized {
|
if !m.initialized {
|
||||||
m.TabContent, cmd = NewEMDBTab(m.emdb, m.logger)
|
m.TabContent, cmd = NewTabEMDB()
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
m.initialized = true
|
m.initialized = true
|
||||||
}
|
}
|
||||||
m.Log(fmt.Sprintf("new window size: %dx%d", msg.Width, msg.Height))
|
logger.Log(fmt.Sprintf("new window size: %dx%d", msg.Width, msg.Height))
|
||||||
m.setSize()
|
m.setSize()
|
||||||
tabSize := TabSizeMsgType{
|
tabSize := TabSizeMsgType{
|
||||||
Width: m.contentSize.Width,
|
Width: m.contentSize.Width,
|
||||||
|
@ -75,23 +68,21 @@ func (m baseModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
}
|
}
|
||||||
m.TabContent, cmd = m.TabContent.Update(tabSize)
|
m.TabContent, cmd = m.TabContent.Update(tabSize)
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
m.Log("done with resize")
|
logger.Log("done with resize")
|
||||||
|
//case FetchMoviesCmd:
|
||||||
|
// cmds = append(cmds, FetchMovieList(m.emdb, m.logger))
|
||||||
}
|
}
|
||||||
|
|
||||||
m.TabContent, cmd = m.TabContent.Update(msg)
|
m.TabContent, cmd = m.TabContent.Update(msg)
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
|
|
||||||
m.logViewport.SetContent(strings.Join(m.logger.Lines, "\n"))
|
m.logViewport.SetContent(logger.Content())
|
||||||
m.logViewport.GotoBottom()
|
m.logViewport.GotoBottom()
|
||||||
m.logViewport, cmd = m.logViewport.Update(msg)
|
m.logViewport, cmd = m.logViewport.Update(msg)
|
||||||
|
|
||||||
return m, tea.Batch(cmds...)
|
return m, tea.Batch(cmds...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *baseModel) Log(msg string) {
|
|
||||||
m.logger.Log(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m baseModel) View() string {
|
func (m baseModel) View() string {
|
||||||
if !m.initialized {
|
if !m.initialized {
|
||||||
return "\n Initializing..."
|
return "\n Initializing..."
|
||||||
|
|
|
@ -3,11 +3,12 @@ package tui
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"ewintr.nl/emdb/client"
|
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
)
|
)
|
||||||
|
|
||||||
func FetchMovieList(emdb *client.EMDB, logger *Logger) tea.Cmd {
|
type FetchMoviesCmd tea.Cmd
|
||||||
|
|
||||||
|
func FetchMovieList() tea.Cmd {
|
||||||
return func() tea.Msg {
|
return func() tea.Msg {
|
||||||
logger.Log("fetching emdb movies...")
|
logger.Log("fetching emdb movies...")
|
||||||
ems, err := emdb.GetMovies()
|
ems, err := emdb.GetMovies()
|
||||||
|
|
|
@ -1,37 +1,32 @@
|
||||||
package tui
|
package tui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"ewintr.nl/emdb/client"
|
|
||||||
"github.com/charmbracelet/bubbles/list"
|
"github.com/charmbracelet/bubbles/list"
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
)
|
)
|
||||||
|
|
||||||
type emdbTab struct {
|
type tabEMDB struct {
|
||||||
initialized bool
|
initialized bool
|
||||||
list list.Model
|
list list.Model
|
||||||
emdb *client.EMDB
|
|
||||||
logger *Logger
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEMDBTab(emdb *client.EMDB, logger *Logger) (tea.Model, tea.Cmd) {
|
func NewTabEMDB() (tea.Model, tea.Cmd) {
|
||||||
list := list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0)
|
list := list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0)
|
||||||
list.Title = "Movies"
|
list.Title = "Movies"
|
||||||
list.SetShowHelp(false)
|
list.SetShowHelp(false)
|
||||||
|
|
||||||
m := emdbTab{
|
m := tabEMDB{
|
||||||
emdb: emdb,
|
list: list,
|
||||||
logger: logger,
|
|
||||||
list: list,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return m, FetchMovieList(emdb, logger)
|
return m, FetchMovieList()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m emdbTab) Init() tea.Cmd {
|
func (m tabEMDB) Init() tea.Cmd {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m emdbTab) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
func (m tabEMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
var cmd tea.Cmd
|
var cmd tea.Cmd
|
||||||
var cmds []tea.Cmd
|
var cmds []tea.Cmd
|
||||||
|
|
||||||
|
@ -52,10 +47,6 @@ func (m emdbTab) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
return m, tea.Batch(cmds...)
|
return m, tea.Batch(cmds...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m emdbTab) View() string {
|
func (m tabEMDB) View() string {
|
||||||
return m.list.View()
|
return m.list.View()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *emdbTab) Log(s string) {
|
|
||||||
m.logger.Log(s)
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
package tui
|
package tui
|
||||||
|
|
||||||
|
import "ewintr.nl/emdb/client"
|
||||||
|
|
||||||
|
type tabTMDB struct {
|
||||||
|
initialized bool
|
||||||
|
tmdb *client.TMDB
|
||||||
|
logger *Logger
|
||||||
|
}
|
||||||
|
|
||||||
//focused string
|
//focused string
|
||||||
//searchInput textinput.Model
|
//searchInput textinput.Model
|
||||||
//searchResults list.Model
|
//searchResults list.Model
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package tui
|
package tui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"ewintr.nl/emdb/client"
|
"ewintr.nl/emdb/client"
|
||||||
"github.com/charmbracelet/bubbles/viewport"
|
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
"github.com/muesli/termenv"
|
"github.com/muesli/termenv"
|
||||||
|
@ -18,6 +21,10 @@ var (
|
||||||
Padding(0, 1).
|
Padding(0, 1).
|
||||||
Border(lipgloss.NormalBorder(), true)
|
Border(lipgloss.NormalBorder(), true)
|
||||||
logLineCount = 5
|
logLineCount = 5
|
||||||
|
|
||||||
|
emdb *client.EMDB
|
||||||
|
tmdb *client.TMDB
|
||||||
|
logger = NewLogger()
|
||||||
)
|
)
|
||||||
|
|
||||||
type Logger struct {
|
type Logger struct {
|
||||||
|
@ -39,14 +46,27 @@ func (l *Logger) Log(s string) {
|
||||||
l.Lines = append(l.Lines, s)
|
l.Lines = append(l.Lines, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *Logger) Content() string {
|
||||||
|
if l.Lines == nil {
|
||||||
|
return "logger not initialized"
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Join(l.Lines, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
type TabSizeMsgType tea.WindowSizeMsg
|
type TabSizeMsgType tea.WindowSizeMsg
|
||||||
|
|
||||||
func New(emdb *client.EMDB, tmdb *client.TMDB, logger *Logger) (*tea.Program, error) {
|
func New(emdb *client.EMDB, tmdb *client.TMDB) (*tea.Program, error) {
|
||||||
logViewport := viewport.New(0, 0)
|
emdb = emdb
|
||||||
logViewport.KeyMap = viewport.KeyMap{}
|
tmdb = tmdb
|
||||||
|
|
||||||
m, _ := NewBaseModel(emdb, tmdb, logger)
|
fmt.Printf("emdb: %v\n", emdb)
|
||||||
|
os.Exit(0)
|
||||||
|
|
||||||
|
m, _ := NewBaseModel()
|
||||||
p := tea.NewProgram(m, tea.WithAltScreen())
|
p := tea.NewProgram(m, tea.WithAltScreen())
|
||||||
|
|
||||||
|
logger.SetProgram(p)
|
||||||
|
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue