refac
This commit is contained in:
@@ -58,6 +58,34 @@
|
|||||||
return `${minutes}:${formattedSeconds}`;
|
return `${minutes}:${formattedSeconds}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let wakeLock = null;
|
||||||
|
|
||||||
|
const requestWakeLock = async () => {
|
||||||
|
if ('wakeLock' in navigator) {
|
||||||
|
try {
|
||||||
|
wakeLock = await navigator.wakeLock.request('screen');
|
||||||
|
console.log('Wake Lock acquired');
|
||||||
|
|
||||||
|
wakeLock.addEventListener('release', () => {
|
||||||
|
console.log('Wake Lock released');
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
console.log('Wake Lock request failed:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const releaseWakeLock = async () => {
|
||||||
|
if (wakeLock) {
|
||||||
|
try {
|
||||||
|
await wakeLock.release();
|
||||||
|
} catch (err) {
|
||||||
|
console.log('Wake Lock release failed:', err);
|
||||||
|
}
|
||||||
|
wakeLock = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let stream;
|
let stream;
|
||||||
let speechRecognition;
|
let speechRecognition;
|
||||||
|
|
||||||
@@ -216,11 +244,13 @@
|
|||||||
mimeType: mineTypes.find((type) => MediaRecorder.isTypeSupported(type))
|
mimeType: mineTypes.find((type) => MediaRecorder.isTypeSupported(type))
|
||||||
});
|
});
|
||||||
|
|
||||||
mediaRecorder.onstart = () => {
|
mediaRecorder.onstart = async () => {
|
||||||
console.log('Recording started');
|
console.log('Recording started');
|
||||||
loading = false;
|
loading = false;
|
||||||
startDurationCounter();
|
startDurationCounter();
|
||||||
|
|
||||||
|
await requestWakeLock();
|
||||||
|
|
||||||
audioChunks = [];
|
audioChunks = [];
|
||||||
analyseAudio(stream);
|
analyseAudio(stream);
|
||||||
};
|
};
|
||||||
@@ -333,6 +363,8 @@
|
|||||||
speechRecognition.stop();
|
speechRecognition.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await releaseWakeLock();
|
||||||
|
|
||||||
stopDurationCounter();
|
stopDurationCounter();
|
||||||
audioChunks = [];
|
audioChunks = [];
|
||||||
visualizerData = Array(VISUALIZER_BUFFER_LENGTH).fill(0);
|
visualizerData = Array(VISUALIZER_BUFFER_LENGTH).fill(0);
|
||||||
@@ -354,6 +386,8 @@
|
|||||||
}
|
}
|
||||||
clearInterval(durationCounter);
|
clearInterval(durationCounter);
|
||||||
|
|
||||||
|
await releaseWakeLock();
|
||||||
|
|
||||||
if (stream) {
|
if (stream) {
|
||||||
const tracks = stream.getTracks();
|
const tracks = stream.getTracks();
|
||||||
tracks.forEach((track) => track.stop());
|
tracks.forEach((track) => track.stop());
|
||||||
@@ -376,8 +410,15 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleVisibilityChange = async () => {
|
||||||
|
if (recording && document.visibilityState === 'visible') {
|
||||||
|
await requestWakeLock();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
window.addEventListener('keydown', handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
document.addEventListener('visibilitychange', handleVisibilityChange);
|
||||||
|
|
||||||
// listen to width changes
|
// listen to width changes
|
||||||
resizeObserver = new ResizeObserver(() => {
|
resizeObserver = new ResizeObserver(() => {
|
||||||
@@ -396,6 +437,8 @@
|
|||||||
|
|
||||||
onDestroy(() => {
|
onDestroy(() => {
|
||||||
window.removeEventListener('keydown', handleKeyDown);
|
window.removeEventListener('keydown', handleKeyDown);
|
||||||
|
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
||||||
|
releaseWakeLock();
|
||||||
// remove resize observer
|
// remove resize observer
|
||||||
resizeObserver.disconnect();
|
resizeObserver.disconnect();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user