11import { useCallback , useEffect , useRef } from "react" ;
2+
23import { useRTCStore } from "@/hooks/stores" ;
34import api from "@/api" ;
45
@@ -97,9 +98,9 @@ export function useMicrophone() {
9798
9899 // Make debug function available globally for console access
99100 useEffect ( ( ) => {
100- ( window as any ) . debugMicrophoneState = debugMicrophoneState ;
101+ ( window as Window & { debugMicrophoneState ?: ( ) => unknown } ) . debugMicrophoneState = debugMicrophoneState ;
101102 return ( ) => {
102- delete ( window as any ) . debugMicrophoneState ;
103+ delete ( window as Window & { debugMicrophoneState ?: ( ) => unknown } ) . debugMicrophoneState ;
103104 } ;
104105 } , [ debugMicrophoneState ] ) ;
105106
@@ -396,7 +397,7 @@ export function useMicrophone() {
396397 isStartingRef . current = false ;
397398 return { success : false , error : micError } ;
398399 }
399- } , [ peerConnection , setMicrophoneStream , setMicrophoneSender , setMicrophoneActive , setMicrophoneMuted , syncMicrophoneState , stopMicrophoneStream ] ) ;
400+ } , [ peerConnection , setMicrophoneStream , setMicrophoneSender , setMicrophoneActive , setMicrophoneMuted , stopMicrophoneStream , isMicrophoneActive , isMicrophoneMuted , microphoneStream ] ) ;
400401
401402 // Stop microphone
402403 const stopMicrophone = useCallback ( async ( ) : Promise < { success : boolean ; error ?: MicrophoneError } > => {
@@ -519,7 +520,15 @@ export function useMicrophone() {
519520
520521 try {
521522 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+ } [ ] = [ ] ;
523532
524533 stats . forEach ( ( report , id ) => {
525534 if ( report . type === 'outbound-rtp' && report . kind === 'audio' ) {
@@ -576,7 +585,7 @@ export function useMicrophone() {
576585
577586 // 3. Test audio level detection manually
578587 try {
579- const audioContext = new ( window . AudioContext || ( window as any ) . webkitAudioContext ) ( ) ;
588+ const audioContext = new ( window . AudioContext || ( window as Window & { webkitAudioContext ?: typeof AudioContext } ) . webkitAudioContext ) ( ) ;
580589 const analyser = audioContext . createAnalyser ( ) ;
581590 const source = audioContext . createMediaStreamSource ( stream ) ;
582591
@@ -595,8 +604,8 @@ export function useMicrophone() {
595604 analyser . getByteFrequencyData ( dataArray ) ;
596605
597606 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 ;
600609 }
601610 const rms = Math . sqrt ( sum / dataArray . length ) ;
602611 const level = Math . min ( 100 , ( rms / 255 ) * 100 ) ;
@@ -672,13 +681,37 @@ export function useMicrophone() {
672681
673682 // Make debug functions available globally for console access
674683 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 ;
678699 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 ;
682715 } ;
683716 } , [ debugMicrophoneState , checkAudioTransmissionStats , testMicrophoneAudio ] ) ;
684717
0 commit comments