Stop tool status audio before final speech
This commit is contained in:
@@ -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);
|
||||
}}
|
||||
}})();
|
||||
|
||||
Reference in New Issue
Block a user