From 5cd9adcb461d1f844a6bf4faedc604ec0ad7c449 Mon Sep 17 00:00:00 2001 From: Georg Tomitsch Date: Sat, 5 Apr 2025 11:48:37 +0000 Subject: [PATCH] Fixed two way binding for speech button. --- public/js/tts-player.js | 17 ++++++++++++++++- public/js/ui-controller.js | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/public/js/tts-player.js b/public/js/tts-player.js index 88f6778..07e9d98 100644 --- a/public/js/tts-player.js +++ b/public/js/tts-player.js @@ -82,7 +82,7 @@ class TTSPlayerModule extends BaseModule { } }); - // Listen for TTS toggle events from UI + // Listen for TTS toggle events from UI - support both event names this.addEventListener(document, 'tts:toggle', () => { this.toggle(); // Dispatch state change event for UI to update @@ -91,6 +91,21 @@ class TTSPlayerModule extends BaseModule { })); }); + // Also listen for ui:tts:toggle events (from the main UI) + this.addEventListener(document, 'ui:tts:toggle', (event) => { + // If we have explicit enabled value, use it instead of toggling + if (event.detail && typeof event.detail.enabled === 'boolean') { + this.enabled = event.detail.enabled; + } else { + this.toggle(); + } + + // Dispatch state change event for UI to update + document.dispatchEvent(new CustomEvent('tts:stateChange', { + detail: { enabled: this.enabled, available: ttsFactory.ttsAvailable } + })); + }); + // Listen for sentence ready events to preload TTS this.addEventListener(document, 'buffer:sentence', (event) => { if (event.detail && event.detail.sentence && this.enabled) { diff --git a/public/js/ui-controller.js b/public/js/ui-controller.js index 26522b7..9603aab 100644 --- a/public/js/ui-controller.js +++ b/public/js/ui-controller.js @@ -269,6 +269,19 @@ class UIController extends BaseModule { } }); + // Listen for TTS state changes (from options UI or TTS player) + document.addEventListener('tts:stateChange', (event) => { + if (event.detail && typeof event.detail.enabled === 'boolean') { + this.ttsEnabled = event.detail.enabled; + this.updateButtonStates(); + + // Ensure persistence is updated + if (persistenceManager) { + persistenceManager.updatePreference('tts', 'enabled', this.ttsEnabled); + } + } + }); + // Listen for TTS engine changes document.addEventListener('tts:engine:change', (event) => { // Update button states since TTS engine changed