48 lines
1,003 B
Go
48 lines
1,003 B
Go
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)
|
|
}
|
|
}
|