Skip to content

Commit 0f8d798

Browse files
committed
refac
1 parent d7a5a90 commit 0f8d798

1 file changed

Lines changed: 44 additions & 1 deletion

File tree

src/lib/components/chat/MessageInput/VoiceRecording.svelte

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,34 @@
5858
return `${minutes}:${formattedSeconds}`;
5959
};
6060
61+
let wakeLock = null;
62+
63+
const requestWakeLock = async () => {
64+
if ('wakeLock' in navigator) {
65+
try {
66+
wakeLock = await navigator.wakeLock.request('screen');
67+
console.log('Wake Lock acquired');
68+
69+
wakeLock.addEventListener('release', () => {
70+
console.log('Wake Lock released');
71+
});
72+
} catch (err) {
73+
console.log('Wake Lock request failed:', err);
74+
}
75+
}
76+
};
77+
78+
const releaseWakeLock = async () => {
79+
if (wakeLock) {
80+
try {
81+
await wakeLock.release();
82+
} catch (err) {
83+
console.log('Wake Lock release failed:', err);
84+
}
85+
wakeLock = null;
86+
}
87+
};
88+
6189
let stream;
6290
let speechRecognition;
6391
@@ -216,11 +244,13 @@
216244
mimeType: mineTypes.find((type) => MediaRecorder.isTypeSupported(type))
217245
});
218246
219-
mediaRecorder.onstart = () => {
247+
mediaRecorder.onstart = async () => {
220248
console.log('Recording started');
221249
loading = false;
222250
startDurationCounter();
223251
252+
await requestWakeLock();
253+
224254
audioChunks = [];
225255
analyseAudio(stream);
226256
};
@@ -333,6 +363,8 @@
333363
speechRecognition.stop();
334364
}
335365
366+
await releaseWakeLock();
367+
336368
stopDurationCounter();
337369
audioChunks = [];
338370
visualizerData = Array(VISUALIZER_BUFFER_LENGTH).fill(0);
@@ -354,6 +386,8 @@
354386
}
355387
clearInterval(durationCounter);
356388
389+
await releaseWakeLock();
390+
357391
if (stream) {
358392
const tracks = stream.getTracks();
359393
tracks.forEach((track) => track.stop());
@@ -376,8 +410,15 @@
376410
}
377411
};
378412
413+
const handleVisibilityChange = async () => {
414+
if (recording && document.visibilityState === 'visible') {
415+
await requestWakeLock();
416+
}
417+
};
418+
379419
onMount(() => {
380420
window.addEventListener('keydown', handleKeyDown);
421+
document.addEventListener('visibilitychange', handleVisibilityChange);
381422
382423
// listen to width changes
383424
resizeObserver = new ResizeObserver(() => {
@@ -396,6 +437,8 @@
396437
397438
onDestroy(() => {
398439
window.removeEventListener('keydown', handleKeyDown);
440+
document.removeEventListener('visibilitychange', handleVisibilityChange);
441+
releaseWakeLock();
399442
// remove resize observer
400443
resizeObserver.disconnect();
401444
});

0 commit comments

Comments
 (0)