File tree Expand file tree Collapse file tree 1 file changed +9
-4
lines changed
frontend/viewer/src/lib/components/audio/recorder Expand file tree Collapse file tree 1 file changed +9
-4
lines changed Original file line number Diff line number Diff line change 8080
8181 let wavesurfer: WaveSurfer | undefined ;
8282 let recorder: RecordPlugin | undefined ;
83- let micActivatorStream : MediaStream | undefined ;
83+ let micActivatorStreamPromise : Promise < MediaStream > | undefined ;
8484
8585 watch (() => container , (newContainer ) => {
8686 reset ();
111111 // Request access/activate mic early so it's ready on demand and there's no initial crackle
112112 // Note: I don't think any browser enforces getUserMedia() to be called in the context of a user gesture
113113 // except when the user has previously denied access, in which case this could be sub-optimal
114- micActivatorStream = await navigator .mediaDevices .getUserMedia ({ audio: true });
114+
115+ // assign the promise before we wait for it so onDestroy can always see it
116+ micActivatorStreamPromise = navigator .mediaDevices .getUserMedia ({ audio: true });
117+ await micActivatorStreamPromise ;
115118 }
116119
117120 function cleanUpStream() {
118- micActivatorStream ?.getTracks ().forEach (track => track .stop ());
119- micActivatorStream = undefined ;
121+ void micActivatorStreamPromise ?.then (stream => {
122+ stream .getTracks ().forEach (track => track .stop ());
123+ });
124+ micActivatorStreamPromise = undefined ;
120125 }
121126
122127 function initRecorder(container : string | HTMLElement ) {
You can’t perform that action at this time.
0 commit comments