From 7bb539a62006b72b75be683d531828f20819757e Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Mon, 30 Mar 2026 18:55:02 +0530 Subject: [PATCH] fix: complaints mic - check server STT on init and handle server mode click MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - initComplaintsSpeech() now calls checkComplaintsSttServer() async: server up → mode 'server', browser fallback → mode 'browser', else 'off' - click handler now handles both 'server' and 'browser' modes (previously only 'browser' was handled, server mode click did nothing) - show '…' while server health check is in progress to avoid confusion --- app/Views/billing/opd_prescription_basic.php | 29 ++++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/app/Views/billing/opd_prescription_basic.php b/app/Views/billing/opd_prescription_basic.php index 93e2d6d..a4db6e6 100644 --- a/app/Views/billing/opd_prescription_basic.php +++ b/app/Views/billing/opd_prescription_basic.php @@ -1379,6 +1379,10 @@ } function initComplaintsSpeech() { + // Show checking state while server availability is probed + var $micBtn = $('#btn_complaints_mic'); + $micBtn.prop('disabled', true).text('…'); + var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; if (SpeechRecognition) { complaintsSpeechRecognition = new SpeechRecognition(); @@ -1423,14 +1427,27 @@ }; } - if (complaintsSpeechRecognition) { - setComplaintsMicMode('browser', 'Complaints Mic is ready (browser mode for local language).'); - } else { - setComplaintsMicMode('off', 'Complaints Mic unavailable in this browser.'); - } + // Check server STT availability first; fallback to browser, then off + checkComplaintsSttServer().then(function(serverUp) { + if (serverUp) { + setComplaintsMicMode('server', 'Complaints Mic ready (server STT).'); + } else if (complaintsSpeechRecognition) { + setComplaintsMicMode('browser', 'Complaints Mic ready (browser mode).'); + } else { + setComplaintsMicMode('off', 'Complaints Mic unavailable in this browser.'); + } + }).catch(function() { + if (complaintsSpeechRecognition) { + setComplaintsMicMode('browser', 'Complaints Mic ready (browser mode).'); + } else { + setComplaintsMicMode('off', 'Complaints Mic unavailable in this browser.'); + } + }); $('#btn_complaints_mic').on('click', function() { - if (complaintsMicMode === 'browser') { + if (complaintsMicMode === 'server') { + startComplaintsServerStt(); + } else if (complaintsMicMode === 'browser') { startComplaintsBrowserStt(); } });