mirror of
https://github.com/R0m1k3/LiveFlow.git
synced 2026-10-11 17:27:19 +02:00
fix: gestion des contextes non sécurisés, erreurs websocket et rechargement liste des réunions
This commit is contained in:
1 parent
a343c90340
commit
dd31090d3f
2 files changed
+26
-1
No files matched your search
+24
-1
@@ -1,5 +1,13 @@
|
||||
const $ = (id) => document.getElementById(id);
|
||||
|
||||
// Vérification du contexte sécurisé (requis pour le micro et les périphériques)
|
||||
if (window.isSecureContext === false) {
|
||||
const warning = document.createElement('div');
|
||||
warning.style.cssText = 'background: #3a181a; color: #ff8589; padding: 12px; text-align: center; font-weight: bold; border-bottom: 1px solid #e5484d; font-size: 0.9rem; z-index: 9999; position: relative;';
|
||||
warning.innerHTML = '⚠️ Contexte non sécurisé (HTTP) détecté. Le navigateur bloquera l\'accès au micro. Veuillez utiliser HTTPS (https://...) ou localhost.';
|
||||
document.body.insertBefore(warning, document.body.firstChild);
|
||||
}
|
||||
|
||||
const state = {
|
||||
recording: false,
|
||||
ws: null,
|
||||
@@ -84,7 +92,19 @@ async function startRecording() {
|
||||
diarization: $('diarization-cb').checked,
|
||||
}));
|
||||
state.ws.onmessage = onServerMessage;
|
||||
state.ws.onclose = () => { if (state.recording) stopRecording(true); };
|
||||
state.ws.onerror = (err) => {
|
||||
console.error('Erreur WebSocket :', err);
|
||||
setStatus('error', 'Erreur Connexion');
|
||||
};
|
||||
state.ws.onclose = (e) => {
|
||||
console.log(`WebSocket fermé : code=${e.code}, raison=${e.reason}`);
|
||||
if (state.recording) {
|
||||
stopRecording(true);
|
||||
if (e.code !== 1000 && e.code !== 1001) {
|
||||
setStatus('error', `Déconnexion (${e.code})`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
state.audioContext = new AudioContext();
|
||||
await state.audioContext.audioWorklet.addModule('worklet.js');
|
||||
@@ -138,6 +158,9 @@ function stopRecording(abrupt = false) {
|
||||
$('record-btn').textContent = '● Démarrer';
|
||||
$('record-btn').classList.remove('recording');
|
||||
$('title').disabled = false;
|
||||
|
||||
// Toujours recharger les réunions pour synchroniser la liste (cas d'arrêt abrupt ou échec)
|
||||
loadMeetings();
|
||||
}
|
||||
|
||||
function onServerMessage(event) {
|
||||
|
||||
@@ -31,3 +31,5 @@ Vérification de la cohérence de tous les fichiers (backend et frontend) et tes
|
||||
- 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.
|
||||
- Ajout de la variable d'environnement DIARIZATION_MAX_SPEAKERS (défaut 8) et intégration dans l'instanciation de SpeakerDiarizer.
|
||||
- Résolution des problèmes de synchronisation de la liste des réunions (rechargement systématique dans stopRecording), détection des contextes non sécurisés (affichage d'un bandeau d'erreur si HTTP) et gestion des erreurs de connexion WebSocket.
|
||||
|
||||
Reference in new issue
Block a user