package main

// Voice state tracking for the TUI client.

// VoiceState holds the current voice connection state.
type VoiceState struct {
	Connected    bool
	RoomName     string
	LiveKitURL   string
	Token        string
	Muted        bool
	Deafened     bool
	Participants []VoiceParticipant
}

// VoiceParticipant is someone in the current voice channel.
type VoiceParticipant struct {
	UserID   string
	Username string
	State    string // connected, disconnected
}

// VoiceStatusText returns a human-readable status for the status bar.
func (vs *VoiceState) StatusText() string {
	if !vs.Connected {
		return ""
	}
	muteIcon := "🔊"
	if vs.Muted {
		muteIcon = "🔇"
	}
	return muteIcon + " " + vs.RoomName
}

// ToggleMute flips the muted state.
func (vs *VoiceState) ToggleMute() {
	vs.Muted = !vs.Muted
}

// ToggleDeafen flips the deafened state.
func (vs *VoiceState) ToggleDeafen() {
	vs.Deafened = !vs.Deafened
	if vs.Deafened {
		vs.Muted = true
	}
}
