package tui import ( "fmt" "audio-catalyst/internal/domain/repositories" ) // UILogger адаптер, который дублирует логи в TUI и (опционально) в базовый логгер type UILogger struct { base repositories.Logger // может быть nil (тогда лог только в TUI) mgr *Manager } func NewUILogger(base repositories.Logger, mgr *Manager) *UILogger { return &UILogger{base: base, mgr: mgr} } func (l *UILogger) Info(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) if l.base != nil { l.base.Info("%s", msg) } l.mgr.SendLogUpdate("[white]" + msg) } func (l *UILogger) Debug(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) if l.base != nil { l.base.Debug("%s", msg) } l.mgr.SendLogUpdate("[gray]" + msg) } func (l *UILogger) Warning(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) if l.base != nil { l.base.Warning("%s", msg) } l.mgr.SendLogUpdate("[yellow]" + msg) } func (l *UILogger) Error(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) if l.base != nil { l.base.Error("%s", msg) } l.mgr.SendLogUpdate("[red]" + msg) } func (l *UILogger) Success(format string, args ...interface{}) { msg := fmt.Sprintf(format, args...) if l.base != nil { l.base.Success("%s", msg) } l.mgr.SendLogUpdate("[green]" + msg) }