package commands

import (
	"fmt"
	"time"

	"github.com/zmb3/spotify/v2"
)

func (c *Commander) NowPlaying(force bool) error {
	if force {
		current, err := c.Client().PlayerCurrentlyPlaying(c.Context)
		if err != nil {
			return err
		}
		str := FormatSong(current)
		fmt.Println(str)
		_, err = c.Cache.Put("now_playing", str, 5*time.Second)
		return err
	}
	song, err := c.Cache.GetOrDo("now_playing", func() (string, error) {
		current, err := c.Client().PlayerCurrentlyPlaying(c.Context)
		if err != nil {
			return "", err
		}
		str := FormatSong(current)
		return str, nil
	}, 5*time.Second)
	if err != nil {
		return err
	}
	fmt.Println(song)
	return nil
}

func FormatSong(current *spotify.CurrentlyPlaying) string {
	out := "▶"
	if !current.Playing || current == nil {
		out = "⏸"
	}
	if current != nil {
		if current.Item != nil {
			out += fmt.Sprintf(" %s", current.Item.Name)
			if len(current.Item.Artists) > 0 {
				out += fmt.Sprintf(" - %s", current.Item.Artists[0].Name)
			}
		}
	}
	return out
}