Auto-deploy: 2026-06-02 18:48:35
This commit is contained in:
27
speech.js
27
speech.js
@@ -29,7 +29,7 @@ function initRecognition(language) {
|
||||
let interimText = '';
|
||||
let finalText = '';
|
||||
|
||||
for (let i = event.resultIndex; i < event.results.length; i++) {
|
||||
for (let i = 0; i < event.results.length; i++) {
|
||||
const result = event.results[i];
|
||||
if (result.isFinal) {
|
||||
finalText += result[0].transcript + ' ';
|
||||
@@ -38,10 +38,10 @@ function initRecognition(language) {
|
||||
}
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({
|
||||
type: 'OFFSCREEN_RECORDING_RESULT',
|
||||
window.parent.postMessage({
|
||||
type: 'SPEECH_RESULT',
|
||||
payload: { interimText, finalText }
|
||||
});
|
||||
}, '*');
|
||||
};
|
||||
|
||||
recognition.onerror = (event) => {
|
||||
@@ -52,10 +52,10 @@ function initRecognition(language) {
|
||||
stopMediaTracks();
|
||||
}
|
||||
|
||||
chrome.runtime.sendMessage({
|
||||
type: 'OFFSCREEN_RECORDING_ERROR',
|
||||
window.parent.postMessage({
|
||||
type: 'SPEECH_ERROR',
|
||||
payload: { error: event.error }
|
||||
});
|
||||
}, '*');
|
||||
};
|
||||
|
||||
recognition.onend = () => {
|
||||
@@ -67,7 +67,7 @@ function initRecognition(language) {
|
||||
}
|
||||
} else {
|
||||
stopMediaTracks();
|
||||
chrome.runtime.sendMessage({ type: 'OFFSCREEN_RECORDING_END' });
|
||||
window.parent.postMessage({ type: 'SPEECH_END' }, '*');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -75,7 +75,10 @@ function initRecognition(language) {
|
||||
}
|
||||
|
||||
// Listen for messages broadcasted across the extension
|
||||
chrome.runtime.onMessage.addListener((message) => {
|
||||
window.addEventListener('message', (event) => {
|
||||
const message = event.data;
|
||||
if (!message || !message.type) return;
|
||||
|
||||
if (message.type === 'START_RECORDING_FROM_POPUP') {
|
||||
const lang = message.payload?.language || 'ar-SA';
|
||||
|
||||
@@ -90,16 +93,16 @@ chrome.runtime.onMessage.addListener((message) => {
|
||||
recognition.start();
|
||||
isRecording = true;
|
||||
// Tell popup it started successfully
|
||||
chrome.runtime.sendMessage({ type: 'OFFSCREEN_RECORDING_START_SUCCESS' });
|
||||
window.parent.postMessage({ type: 'SPEECH_START_SUCCESS' }, '*');
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('[Speech Iframe] Failed to start:', e);
|
||||
chrome.runtime.sendMessage({ type: 'OFFSCREEN_RECORDING_ERROR', payload: { error: e.message } });
|
||||
window.parent.postMessage({ type: 'SPEECH_ERROR', payload: { error: e.message } }, '*');
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('[Speech Iframe] getUserMedia failed:', err);
|
||||
chrome.runtime.sendMessage({ type: 'OFFSCREEN_RECORDING_ERROR', payload: { error: 'not-allowed' } });
|
||||
window.parent.postMessage({ type: 'SPEECH_ERROR', payload: { error: 'not-allowed' } }, '*');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user