mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-07 21:29:13 +00:00
Properly stop mediaRecorder stream to clear microphone in-use state
This commit is contained in:
@@ -618,6 +618,8 @@
|
|||||||
});
|
});
|
||||||
} else if (mediaRecorder.state === 'recording') {
|
} else if (mediaRecorder.state === 'recording') {
|
||||||
mediaRecorder.stop();
|
mediaRecorder.stop();
|
||||||
|
mediaRecorder.stream.getTracks().forEach(track => track.stop());
|
||||||
|
mediaRecorder = null;
|
||||||
speakButtonImg.src = './assets/icons/microphone-solid.svg';
|
speakButtonImg.src = './assets/icons/microphone-solid.svg';
|
||||||
speakButtonImg.alt = 'Transcribe';
|
speakButtonImg.alt = 'Transcribe';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { App, Modal, RequestUrlParam, request, requestUrl, setIcon } from 'obsidian';
|
import { App, Modal, request, requestUrl, setIcon } from 'obsidian';
|
||||||
import { KhojSetting } from 'src/settings';
|
import { KhojSetting } from 'src/settings';
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
|
|
||||||
@@ -321,6 +321,8 @@ export class KhojChatModal extends Modal {
|
|||||||
});
|
});
|
||||||
} else if (this.mediaRecorder.state === 'recording') {
|
} else if (this.mediaRecorder.state === 'recording') {
|
||||||
this.mediaRecorder.stop();
|
this.mediaRecorder.stop();
|
||||||
|
this.mediaRecorder.stream.getTracks().forEach(track => track.stop());
|
||||||
|
this.mediaRecorder = undefined;
|
||||||
setIcon(transcribeButton, "mic");
|
setIcon(transcribeButton, "mic");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -407,11 +407,14 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
try {
|
try {
|
||||||
const responseAsJson = JSON.parse(chunk);
|
const responseAsJson = JSON.parse(chunk);
|
||||||
if (responseAsJson.detail) {
|
if (responseAsJson.detail) {
|
||||||
newResponseText.innerHTML += responseAsJson.detail;
|
rawResponse += responseAsJson.detail;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// If the chunk is not a JSON object, just display it as is
|
// If the chunk is not a JSON object, just display it as is
|
||||||
newResponseText.innerHTML += chunk;
|
rawResponse += chunk;
|
||||||
|
} finally {
|
||||||
|
newResponseText.innerHTML = "";
|
||||||
|
newResponseText.appendChild(formatHTMLMessage(rawResponse));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// If the chunk is not a JSON object, just display it as is
|
// If the chunk is not a JSON object, just display it as is
|
||||||
@@ -635,6 +638,8 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
});
|
});
|
||||||
} else if (mediaRecorder.state === 'recording') {
|
} else if (mediaRecorder.state === 'recording') {
|
||||||
mediaRecorder.stop();
|
mediaRecorder.stop();
|
||||||
|
mediaRecorder.stream.getTracks().forEach(track => track.stop());
|
||||||
|
mediaRecorder = null;
|
||||||
speakButtonImg.src = '/static/assets/icons/microphone-solid.svg';
|
speakButtonImg.src = '/static/assets/icons/microphone-solid.svg';
|
||||||
speakButtonImg.alt = 'Transcribe';
|
speakButtonImg.alt = 'Transcribe';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user