Stop tool status audio before final speech

This commit is contained in:
Mikei386
2026-08-23 13:56:18 +02:00
parent 727827ac32
commit c60031c957
@@ -113,8 +113,8 @@ class Filter:
const safeCategory = allowed.includes(category) ? category : 'generic';
const timers = window.__mikeAIToolStatusTimers ||= new Map();
if (timers.has(key)) return;
const timer = window.setTimeout(async () => {{
timers.delete(key);
const state = {{ timer: undefined, audio: undefined }};
state.timer = window.setTimeout(async () => {{
let enabled = false;
try {{
const local = JSON.parse(localStorage.getItem('settings') || '{{}}');
@@ -131,15 +131,22 @@ class Filter:
}}
}}
}} catch (_) {{}}
if (!enabled) return;
if (!enabled) {{
timers.delete(key);
return;
}}
try {{
const audio = new Audio(`/static/tool-status/${{safeCategory}}.mp3?status=v1`);
state.audio = audio;
audio.preload = 'auto';
audio.volume = 0.92;
audio.addEventListener('ended', () => timers.delete(key), {{ once: true }});
await audio.play();
}} catch (_) {{}}
}} catch (_) {{
timers.delete(key);
}}
}}, 850);
timers.set(key, timer);
timers.set(key, state);
}})();
""".strip()
try:
@@ -166,9 +173,13 @@ class Filter:
(() => {{
const key = {json.dumps(key)};
const timers = window.__mikeAIToolStatusTimers;
const timer = timers && timers.get(key);
if (timer !== undefined) {{
window.clearTimeout(timer);
const state = timers && timers.get(key);
if (state !== undefined) {{
if (state.timer !== undefined) window.clearTimeout(state.timer);
if (state.audio) {{
state.audio.pause();
state.audio.currentTime = 0;
}}
timers.delete(key);
}}
}})();