Files
esdi/tui/tui.go
T
esilva a6ab64117c this is a doozy - device auto discovery and handling
The main goal was to decouple more things
We got devices being looked for in the background and the stream view
is like a device now too
2026-09-17 23:01:50 +01:00

54 lines
1.2 KiB
Go

// Package tui
package tui
import (
"log/slog"
"esdi/services"
"esdi/tui/internal/controllers"
"github.com/rivo/tview"
)
type ControlPanel struct {
*controllers.Controller
DeviceController *controllers.DeviceController
}
func NewControlPanel(logger *slog.Logger) *ControlPanel {
// NOTE: given the services should not be only for the TUI should this be here?
baseController := &controllers.Controller{
Logger: logger,
App: tview.NewApplication(),
}
// NOTE: create our device service here
devService := services.NewDeviceService(logger.With("service", "DeviceService"))
telemService := services.NewTelemetryService(logger, devService)
if telemService == nil {
panic("failed to create the telemetry service")
}
go telemService.FindProvider(telemService.CtxMonitor)
return &ControlPanel{
Controller: baseController,
DeviceController: controllers.NewDeviceController(baseController, devService, telemService),
}
}
func (cp *ControlPanel) Run() error {
if err := cp.DeviceController.Main(); err != nil {
return err
}
return cp.App.Run()
}
func Run(logger *slog.Logger) error {
progController := NewControlPanel(logger)
return progController.Run()
}