@@ -21,9 +21,13 @@ var CONTROLLER = window.CONTROLLER = function(phone, stream){
2121 // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
2222 var readycb = function ( session ) { } ;
2323 var receivecb = function ( session ) { } ;
24+ var videotogglecb = function ( session , isEnabled ) { } ;
25+ var audiotogglecb = function ( session , isEnabled ) { } ;
2426
2527 CONTROLLER . ready = function ( cb ) { readycb = cb } ;
2628 CONTROLLER . receive = function ( cb ) { receivecb = cb } ;
29+ CONTROLLER . videoToggled = function ( cb ) { videotogglecb = cb } ;
30+ CONTROLLER . audioToggled = function ( cb ) { audiotogglecb = cb } ;
2731
2832 phone . ready ( function ( ) { readycb ( ) } ) ;
2933 phone . receive ( function ( session ) {
@@ -64,7 +68,6 @@ transform: scale(-1, 1); filter: FlipH;";
6468 CONTROLLER . broadcast ( thumbnailHolder ) ;
6569 } ;
6670
67-
6871 CONTROLLER . dial = function ( number ) { // Authenticate here??
6972 var session = phone . dial ( number , get_xirsys_servers ( ) ) ; // Dial Number
7073 if ( ! session ) return ; // No Duplicate Dialing Allowed
@@ -82,11 +85,26 @@ transform: scale(-1, 1); filter: FlipH;";
8285 }
8386 } ;
8487
85- CONTROLLER . toggleMute = function ( ) {
88+ CONTROLLER . toggleAudio = function ( ) {
89+ var audio = false ;
8690 var audioTracks = window . phone . mystream . getAudioTracks ( ) ;
8791 for ( var i = 0 , l = audioTracks . length ; i < l ; i ++ ) {
8892 audioTracks [ i ] . enabled = ! audioTracks [ i ] . enabled ;
93+ audio = audioTracks [ i ] . enabled ;
94+ }
95+ publishCtrlAll ( "userAudio" , { user : phone . number ( ) , audio :audio } ) ; // Stream false if paused
96+ return audio ;
97+ } ;
98+
99+ CONTROLLER . toggleVideo = function ( ) {
100+ var video = false ;
101+ var videoTracks = window . phone . mystream . getVideoTracks ( ) ;
102+ for ( var i = 0 , l = videoTracks . length ; i < l ; i ++ ) {
103+ videoTracks [ i ] . enabled = ! videoTracks [ i ] . enabled ;
104+ video = videoTracks [ i ] . enabled ;
89105 }
106+ publishCtrlAll ( "userVideo" , { user : phone . number ( ) , video :video } ) ; // Stream false if paused
107+ return video ;
90108 } ;
91109
92110 CONTROLLER . isOnline = function ( number , cb ) {
@@ -109,10 +127,7 @@ transform: scale(-1, 1); filter: FlipH;";
109127 } else { // New User added to stream/group
110128 if ( idx == - 1 ) { // Tell everyone in array of new user first, then add to array.
111129 if ( ! isStream ) {
112- for ( var i = 0 ; i < userArray . length ; i ++ ) {
113- var cChan = controlChannel ( userArray [ i ] . number ) ;
114- publishCtrl ( cChan , "userJoin" , session . number ) ;
115- }
130+ publishCtrlAll ( "userJoin" , session . number ) ;
116131 }
117132 userArray . push ( session ) ;
118133 }
@@ -126,6 +141,13 @@ transform: scale(-1, 1); filter: FlipH;";
126141 if ( ! session ) return ; // No Dupelicate Dialing Allowed
127142 }
128143
144+ function publishCtrlAll ( type , data ) {
145+ for ( var i = 0 ; i < userArray . length ; i ++ ) {
146+ var cChan = controlChannel ( userArray [ i ] . number ) ;
147+ publishCtrl ( cChan , type , data ) ;
148+ }
149+ }
150+
129151 function publishCtrl ( ch , type , data ) {
130152 console . log ( "Pub to " + ch ) ;
131153 var msg = { type : type , data : data } ;
@@ -153,6 +175,18 @@ transform: scale(-1, 1); filter: FlipH;";
153175 var idx = findWithAttr ( userArray , "number" , m . data ) ;
154176 if ( idx != - 1 ) userArray . splice ( idx , 1 ) [ 0 ] ;
155177 break ;
178+ case "userVideo" :
179+ var idx = findWithAttr ( userArray , "number" , m . data . user ) ;
180+ var vidEnabled = m . data . video ;
181+ if ( idx != - 1 )
182+ videotogglecb ( userArray [ idx ] , vidEnabled ) ;
183+ break ;
184+ case "userAudio" :
185+ var idx = findWithAttr ( userArray , "number" , m . data . user ) ;
186+ var audEnabled = m . data . audio ;
187+ if ( idx != - 1 )
188+ audiotogglecb ( userArray [ idx ] , audEnabled ) ;
189+ break ;
156190 }
157191 console . log ( m ) ;
158192 console . log ( userArray ) ;
0 commit comments