package commands

import (
	"encoding/json"
	"io"
	"os"
	"path/filepath"

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

func (c *Commander) activateDevice() (spotify.ID, error) {
	var device *spotify.PlayerDevice
	configDir, _ := os.UserConfigDir()
	if _, err := os.Stat(filepath.Join(configDir, "gspot/device.json")); err == nil {
		deviceFile, err := os.Open(filepath.Join(configDir, "gspot/device.json"))
		if err != nil {
			return "", err
		}
		defer deviceFile.Close()
		deviceValue, err := io.ReadAll(deviceFile)
		if err != nil {
			return "", err
		}
		err = json.Unmarshal(deviceValue, &device)
		if err != nil {
			return "", err
		}
		err = c.Client().TransferPlayback(c.Context, device.ID, true)
		if err != nil {
			return "", err
		}
	} else {
		c.Log.Error("COMMANDER", "failed to activated device", "YOU MUST RUN gspot setdevice FIRST")
	}
	return device.ID, nil
}