# CallControls Component ## Zweck - Steuert Anrufstart als Initiator, Mikrofonberechtigungen und Mute/Ende-Interaktionen. ## Kernfunktionen - `request_microphone_access()`: nutzt `MediaManager` zum Einholen des MediaStreams und speichert ihn in `local_media` Signal. - `create_offer()`: Erstellt und sendet Offer via Signaling, registriert `onicecandidate` & `ontrack`. - `mute / end`: Lokalen Zustand aktualisieren, PeerConnection schließen. ## Signalübersicht - `mic_granted`, `audio_muted`, `in_call`: UI States. - Teilt `peer_id`, `remote_id`, `connected`, `websocket`, `peer_connection` (Initiator), `local_media` mit anderen Komponenten. ## Workflow 1. **Mikrofon freigeben** → Tracks werden zur PeerConnection hinzugefügt. 2. **Anruf starten** → PeerConnection erzeugen, Offer senden, auf Answer warten. 3. **Mute/Unmute** → Aktuell nur UI-State, TODO: Track-`enabled` toggeln. 4. **Anruf beenden** → PeerConnection schließen, Signals resetten. ## TODOs - Realer Mute/Unmute über `MediaStreamTrack.enabled`. - Visuelle Feedback-Elemente (Button-States im Discord-Stil). - Device-Auswahl (Audio Output/Input) vor dem Start. - Error-Toasts (z. B. wenn Offer scheitert).