diff --git a/frontend/index.html b/frontend/index.html index da777a9..deab9b6 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1146,7 +1146,7 @@ - + diff --git a/frontend/js/camera.js b/frontend/js/camera.js index b87ea8b..3975e3c 100644 --- a/frontend/js/camera.js +++ b/frontend/js/camera.js @@ -316,22 +316,30 @@ async function lancerCapture() { const avecPreMessages = (i === 0); await compteARebours(avecPreMessages); - // Surprise : seulement en photo simple (pas strip/multi) - // Affiche la surprise PUIS capture pendant que les gens reagissent - const aSurprise = (modeActuel === 'simple') && montrerSurprise(); - if (aSurprise) await pause(500); + // Stopper le preview AVANT la surprise (evite un frame flou visible) + arreterPreview(); - // Flash blanc immédiat + lancer capture en parallèle + // Surprise : seulement en photo simple (pas strip/multi) + // La capture DSLR se lance pendant que l'image surprise est affichee + const aSurprise = (modeActuel === 'simple') && montrerSurprise(); + + // Lancer la capture immediatement (le DSLR met ~1-2s a repondre) + const capturePromise = apiPost('/api/capturer').catch(() => null); + + // Laisser la surprise visible pendant que le DSLR capture + if (aSurprise) await pause(800); + + // Flash blanc au moment ou le DSLR a eu le temps de declencher const flash = document.getElementById('flash-blanc'); flash.classList.remove('cache'); flash.style.animation = 'none'; flash.offsetHeight; flash.style.animation = ''; - arreterPreview(); - let resultat = await apiPost('/api/capturer').catch(() => null); if (aSurprise) { cacherSurprise(); prechargerSurprise(); } + let resultat = await capturePromise; + if (!resultat && !resultat?.erreur) { flash.classList.add('cache'); document.getElementById('capture-en-cours').classList.add('cache');