Pass ProgramOptions to Bubble Tea middleware

Toby Padilla created

Change summary

main.go   | 4 +++-
server.go | 5 +++--
2 files changed, 6 insertions(+), 3 deletions(-)

Detailed changes

main.go 🔗

@@ -3,6 +3,7 @@ package main
 import (
 	"smoothie/tui"
 
+	tea "github.com/charmbracelet/bubbletea"
 	"github.com/meowgorithm/babyenv"
 )
 
@@ -17,7 +18,8 @@ func main() {
 	if err != nil {
 		panic(err)
 	}
-	s, err := NewServer(cfg.Port, cfg.KeyPath, LoggingMiddleware(), BubbleTeaMiddleware(tui.SessionHandler))
+	btm := BubbleTeaMiddleware(tui.SessionHandler, tea.WithAltScreen())
+	s, err := NewServer(cfg.Port, cfg.KeyPath, LoggingMiddleware(), btm)
 	if err != nil {
 		panic(err)
 	}

server.go 🔗

@@ -25,12 +25,13 @@ func LoggingMiddleware() Middleware {
 	}
 }
 
-func BubbleTeaMiddleware(bth func(ssh.Session) tea.Model) Middleware {
+func BubbleTeaMiddleware(bth func(ssh.Session) tea.Model, opts ...tea.ProgramOption) Middleware {
 	return func(sh ssh.Handler) ssh.Handler {
 		return func(s ssh.Session) {
 			m := bth(s)
 			if m != nil {
-				p := tea.NewProgram(m, tea.WithAltScreen(), tea.WithInput(s), tea.WithOutput(s))
+				opts = append(opts, tea.WithInput(s), tea.WithOutput(s))
+				p := tea.NewProgram(m, opts...)
 				err := p.Start()
 				if err != nil {
 					log.Printf("%s error %v: %s\n", s.RemoteAddr().String(), s.Command(), err)