Fix voice button audio unlock hang

This commit is contained in:
2026-04-26 23:03:27 +02:00
parent 68486557dc
commit 1b9933dea7
3 changed files with 13 additions and 7 deletions

View File

@@ -59,12 +59,17 @@ function addBubble(text, role = "assistant") {
async function unlockAudio() {
if (audioUnlocked) return;
const audio = new Audio();
audio.muted = true;
try {
await audio.play();
const AudioContext = window.AudioContext || window.webkitAudioContext;
if (AudioContext) {
const context = new AudioContext();
if (context.state === "suspended") {
await context.resume();
}
await context.close();
}
} catch {
// Mobile browsers only need the attempt to happen inside a tap handler.
// The click itself is enough to authorize later playback in most browsers.
}
audioUnlocked = true;
}
@@ -97,6 +102,7 @@ async function sendText() {
}
async function toggleVoice() {
setStatus("Activation du micro", "live");
await unlockAudio();
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {

View File

@@ -50,6 +50,6 @@
</section>
</main>
<script src="/app.js" type="module"></script>
<script src="/app.js?v=4" type="module"></script>
</body>
</html>

View File

@@ -1,8 +1,8 @@
const CACHE_NAME = "opensquared-assistant-v3";
const CACHE_NAME = "opensquared-assistant-v4";
const ASSETS = [
"/",
"/styles.css",
"/app.js",
"/app.js?v=4",
"/manifest.webmanifest",
"/icons/icon-v2.svg"
];