package main

import (
	"fmt"
	"log"
	"os"

	"github.com/dixonwille/wmenu/v5"

	"github.com/gmgauthier/gostations/internal/radio"
	playerpkg "github.com/gmgauthier/gostations/internal/player"
)

func Short( s string, i int ) string {
	runes := []rune( s )
	if len( runes ) > i {
		return string( runes[:i] )
	}
	return s
}


func Quit() {
	os.Exit(0)
}

func RadioMenu(stations []radio.Station) *wmenu.Menu {
	fmt.Println("...Radio Menu...")
	menu := wmenu.NewMenu("What is your choice?")
	menu.Action(
		func (opts []wmenu.Opt) error {
			if opts[0].Text == "Quit"{Quit()}
			val := fmt.Sprintf("%s",opts[0].Value)
			fmt.Printf("Streaming: %s\n", opts[0].Text)
			leg := playerpkg.NewLegacy(player(), options())
			_ = leg.Play(val)  // legacy path; cleaned impl does Run + live stdio (no bogus CombinedOutput)
			// no more fmt of stdout (that was the source of stray "[]")
			err := menu.Run()
			if err != nil {
				log.Fatal("Oops! " + err.Error())
			}
			return nil
		})
	for _, station := range stations {
		stationListing := fmt.Sprintf("%-40s   %-5s %-5s %s", Short(station.Name, 40), station.Codec, station.Bitrate, station.Url)
		menu.Option(stationListing, station.Url, false, nil )
	}
	menu.Option("Quit", nil, true, nil)
	return menu
}