package commands

func (c *Commander) ChangeVolume(amount int) error {
	state, err := c.Client().PlayerState(c.Context)
	if err != nil {
		return err
	}
	newVolume := state.Device.Volume + amount
	if newVolume > 100 {
		newVolume = 100
	}
	if newVolume < 0 {
		newVolume = 0
	}
	return c.Client().Volume(c.Context, newVolume)
}

func (c *Commander) Mute() error {
	return c.ChangeVolume(-100)
}

func (c *Commander) UnMute() error {
	return c.ChangeVolume(100)
}

func (c *Commander) ToggleMute() error {
	state, err := c.Client().PlayerState(c.Context)
	if err != nil {
		return err
	}
	if state.Device.Volume == 0 {
		return c.ChangeVolume(100)
	}
	return c.ChangeVolume(-100)
}