1
1
import { useCallback , useEffect , useRef } from "react" ;
2
+
2
3
import { useRTCStore } from "@/hooks/stores" ;
3
4
import api from "@/api" ;
4
5
@@ -97,9 +98,9 @@ export function useMicrophone() {
97
98
98
99
// Make debug function available globally for console access
99
100
useEffect ( ( ) => {
100
- ( window as any ) . debugMicrophoneState = debugMicrophoneState ;
101
+ ( window as Window & { debugMicrophoneState ?: ( ) => unknown } ) . debugMicrophoneState = debugMicrophoneState ;
101
102
return ( ) => {
102
- delete ( window as any ) . debugMicrophoneState ;
103
+ delete ( window as Window & { debugMicrophoneState ?: ( ) => unknown } ) . debugMicrophoneState ;
103
104
} ;
104
105
} , [ debugMicrophoneState ] ) ;
105
106
@@ -396,7 +397,7 @@ export function useMicrophone() {
396
397
isStartingRef . current = false ;
397
398
return { success : false , error : micError } ;
398
399
}
399
- } , [ peerConnection , setMicrophoneStream , setMicrophoneSender , setMicrophoneActive , setMicrophoneMuted , syncMicrophoneState , stopMicrophoneStream ] ) ;
400
+ } , [ peerConnection , setMicrophoneStream , setMicrophoneSender , setMicrophoneActive , setMicrophoneMuted , stopMicrophoneStream , isMicrophoneActive , isMicrophoneMuted , microphoneStream ] ) ;
400
401
401
402
// Stop microphone
402
403
const stopMicrophone = useCallback ( async ( ) : Promise < { success : boolean ; error ?: MicrophoneError } > => {
@@ -519,7 +520,15 @@ export function useMicrophone() {
519
520
520
521
try {
521
522
const stats = await microphoneSender . getStats ( ) ;
522
- const audioStats : any [ ] = [ ] ;
523
+ const audioStats : {
524
+ id : string ;
525
+ type : string ;
526
+ kind : string ;
527
+ packetsSent ?: number ;
528
+ bytesSent ?: number ;
529
+ timestamp ?: number ;
530
+ ssrc ?: number ;
531
+ } [ ] = [ ] ;
523
532
524
533
stats . forEach ( ( report , id ) => {
525
534
if ( report . type === 'outbound-rtp' && report . kind === 'audio' ) {
@@ -576,7 +585,7 @@ export function useMicrophone() {
576
585
577
586
// 3. Test audio level detection manually
578
587
try {
579
- const audioContext = new ( window . AudioContext || ( window as any ) . webkitAudioContext ) ( ) ;
588
+ const audioContext = new ( window . AudioContext || ( window as Window & { webkitAudioContext ?: typeof AudioContext } ) . webkitAudioContext ) ( ) ;
580
589
const analyser = audioContext . createAnalyser ( ) ;
581
590
const source = audioContext . createMediaStreamSource ( stream ) ;
582
591
@@ -595,8 +604,8 @@ export function useMicrophone() {
595
604
analyser . getByteFrequencyData ( dataArray ) ;
596
605
597
606
let sum = 0 ;
598
- for ( let i = 0 ; i < dataArray . length ; i ++ ) {
599
- sum += dataArray [ i ] * dataArray [ i ] ;
607
+ for ( const value of dataArray ) {
608
+ sum += value * value ;
600
609
}
601
610
const rms = Math . sqrt ( sum / dataArray . length ) ;
602
611
const level = Math . min ( 100 , ( rms / 255 ) * 100 ) ;
@@ -672,13 +681,37 @@ export function useMicrophone() {
672
681
673
682
// Make debug functions available globally for console access
674
683
useEffect ( ( ) => {
675
- ( window as any ) . debugMicrophone = debugMicrophoneState ;
676
- ( window as any ) . checkAudioStats = checkAudioTransmissionStats ;
677
- ( window as any ) . testMicrophoneAudio = testMicrophoneAudio ;
684
+ ( window as Window & {
685
+ debugMicrophone ?: ( ) => unknown ;
686
+ checkAudioStats ?: ( ) => unknown ;
687
+ testMicrophoneAudio ?: ( ) => unknown ;
688
+ } ) . debugMicrophone = debugMicrophoneState ;
689
+ ( window as Window & {
690
+ debugMicrophone ?: ( ) => unknown ;
691
+ checkAudioStats ?: ( ) => unknown ;
692
+ testMicrophoneAudio ?: ( ) => unknown ;
693
+ } ) . checkAudioStats = checkAudioTransmissionStats ;
694
+ ( window as Window & {
695
+ debugMicrophone ?: ( ) => unknown ;
696
+ checkAudioStats ?: ( ) => unknown ;
697
+ testMicrophoneAudio ?: ( ) => unknown ;
698
+ } ) . testMicrophoneAudio = testMicrophoneAudio ;
678
699
return ( ) => {
679
- delete ( window as any ) . debugMicrophone ;
680
- delete ( window as any ) . checkAudioStats ;
681
- delete ( window as any ) . testMicrophoneAudio ;
700
+ delete ( window as Window & {
701
+ debugMicrophone ?: ( ) => unknown ;
702
+ checkAudioStats ?: ( ) => unknown ;
703
+ testMicrophoneAudio ?: ( ) => unknown ;
704
+ } ) . debugMicrophone ;
705
+ delete ( window as Window & {
706
+ debugMicrophone ?: ( ) => unknown ;
707
+ checkAudioStats ?: ( ) => unknown ;
708
+ testMicrophoneAudio ?: ( ) => unknown ;
709
+ } ) . checkAudioStats ;
710
+ delete ( window as Window & {
711
+ debugMicrophone ?: ( ) => unknown ;
712
+ checkAudioStats ?: ( ) => unknown ;
713
+ testMicrophoneAudio ?: ( ) => unknown ;
714
+ } ) . testMicrophoneAudio ;
682
715
} ;
683
716
} , [ debugMicrophoneState , checkAudioTransmissionStats , testMicrophoneAudio ] ) ;
684
717
0 commit comments