mirror of
https://github.com/R0m1k3/LiveFlow.git
synced 2026-10-21 05:58:19 +02:00
fix: correction de la détection et du listing des micros au chargement
This commit is contained in:
1 parent
a85051c4dd
commit
8dbc657d7d
2 files changed
+23
-2
No files matched your search
+22
-2
@@ -32,6 +32,9 @@ function getSpeakerColorIndex(speaker) {
|
|||||||
|
|
||||||
async function populateMicList() {
|
async function populateMicList() {
|
||||||
const sel = $('mic-select');
|
const sel = $('mic-select');
|
||||||
|
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const devices = await navigator.mediaDevices.enumerateDevices();
|
const devices = await navigator.mediaDevices.enumerateDevices();
|
||||||
const mics = devices.filter((d) => d.kind === 'audioinput');
|
const mics = devices.filter((d) => d.kind === 'audioinput');
|
||||||
@@ -39,6 +42,7 @@ async function populateMicList() {
|
|||||||
const current = sel.value;
|
const current = sel.value;
|
||||||
sel.innerHTML = '<option value="">Micro par défaut</option>';
|
sel.innerHTML = '<option value="">Micro par défaut</option>';
|
||||||
for (const mic of mics) {
|
for (const mic of mics) {
|
||||||
|
if (!mic.deviceId) continue; // Ignorer les périphériques sans ID (permission non accordée)
|
||||||
const opt = document.createElement('option');
|
const opt = document.createElement('option');
|
||||||
opt.value = mic.deviceId;
|
opt.value = mic.deviceId;
|
||||||
opt.textContent = mic.label || `Micro ${sel.options.length}`;
|
opt.textContent = mic.label || `Micro ${sel.options.length}`;
|
||||||
@@ -267,6 +271,22 @@ $('copy-btn').onclick = copyTranscript;
|
|||||||
$('delete-btn').onclick = deleteCurrentMeeting;
|
$('delete-btn').onclick = deleteCurrentMeeting;
|
||||||
loadMeetings();
|
loadMeetings();
|
||||||
|
|
||||||
// Peupler la liste des micros au chargement (et quand un périphérique change)
|
// Peupler la liste des micros au chargement et demander la permission si nécessaire
|
||||||
populateMicList();
|
async function initMics() {
|
||||||
|
await populateMicList();
|
||||||
|
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
||||||
|
try {
|
||||||
|
// Demander l'accès au micro temporairement pour obtenir les autorisations et les noms réels
|
||||||
|
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||||
|
// Relâcher immédiatement le micro pour éteindre le témoin d'enregistrement
|
||||||
|
stream.getTracks().forEach((t) => t.stop());
|
||||||
|
// Re-peupler la liste maintenant que la permission est acquise
|
||||||
|
await populateMicList();
|
||||||
|
} catch (err) {
|
||||||
|
console.log('Permission initiale micro refusée ou non disponible :', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initMics();
|
||||||
navigator.mediaDevices?.addEventListener('devicechange', populateMicList);
|
navigator.mediaDevices?.addEventListener('devicechange', populateMicList);
|
||||||
@@ -27,3 +27,4 @@ Vérification de la cohérence de tous les fichiers (backend et frontend) et tes
|
|||||||
- Développement du frontend (styles, boutons, sélecteur de micro, badges).
|
- Développement du frontend (styles, boutons, sélecteur de micro, badges).
|
||||||
- Validation et commit des modifications pour le sélecteur de micro et la diarisation.
|
- Validation et commit des modifications pour le sélecteur de micro et la diarisation.
|
||||||
- Amélioration du frontend pour rafraîchir les noms des micros après autorisation d'accès, commit et push sur main.
|
- Amélioration du frontend pour rafraîchir les noms des micros après autorisation d'accès, commit et push sur main.
|
||||||
|
- Correction de l'affichage de la liste des micros : demande initiale d'autorisation au chargement de la page et filtrage des périphériques sans identifiant.
|
||||||
Reference in new issue
Block a user