package controllers import ( tea "github.com/charmbracelet/bubbletea" "github.com/lmika/awstools/internal/common/ui/events" "github.com/lmika/awstools/internal/slog-view/models" "github.com/lmika/awstools/internal/slog-view/services/logreader" "sync" ) type LogFileController struct { logReader *logreader.Service // state mutex *sync.Mutex filename string logFile *models.LogFile } func NewLogFileController(logReader *logreader.Service, filename string) *LogFileController { return &LogFileController{ logReader: logReader, filename: filename, mutex: new(sync.Mutex), } } func (lfc *LogFileController) ReadLogFile() tea.Cmd { return func() tea.Msg { logFile, err := lfc.logReader.Open(lfc.filename) if err != nil { return events.Error(err) } return NewLogFile(logFile) } } func (lfc *LogFileController) ViewLogLineFullScreen(line *models.LogLine) tea.Cmd { if line == nil { return nil } return func() tea.Msg { return ViewLogLineFullScreen(line) } }