浏览代码

return promise in addTrack and removeTrack

master
isymchych 10 年前
父节点
当前提交
095ef33da9
共有 2 个文件被更改,包括 31 次插入23 次删除
  1. 30
    22
      JitsiConference.js
  2. 1
    1
      modules/RTC/ScreenObtainer.js

+ 30
- 22
JitsiConference.js 查看文件

274
 /**
274
 /**
275
  * Adds JitsiLocalTrack object to the conference.
275
  * Adds JitsiLocalTrack object to the conference.
276
  * @param track the JitsiLocalTrack object.
276
  * @param track the JitsiLocalTrack object.
277
+ * @returns {Promise<JitsiLocalTrack>}
277
  */
278
  */
278
 JitsiConference.prototype.addTrack = function (track) {
279
 JitsiConference.prototype.addTrack = function (track) {
279
     if (track.isVideoTrack()) {
280
     if (track.isVideoTrack()) {
285
             }
286
             }
286
         });
287
         });
287
     }
288
     }
288
-    this.room.addStream(track.getOriginalStream(), function () {
289
-        this.rtc.addLocalStream(track);
290
-        if (track.startMuted) {
291
-            track.mute();
292
-        }
293
-        track.muteHandler = this._fireMuteChangeEvent.bind(this, track);
294
-        track.stopHandler = this.removeTrack.bind(this, track);
295
-        track.audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
296
-        track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED,
297
-            track.muteHandler);
298
-        track.addEventListener(JitsiTrackEvents.TRACK_STOPPED,
299
-            track.stopHandler);
300
-        track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
301
-            track.audioLevelHandler);
302
-        this.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
289
+    return new Promise(function (resolve) {
290
+        this.room.addStream(track.getOriginalStream(), function () {
291
+            this.rtc.addLocalStream(track);
292
+            if (track.startMuted) {
293
+                track.mute();
294
+            }
295
+            track.muteHandler = this._fireMuteChangeEvent.bind(this, track);
296
+            track.stopHandler = this.removeTrack.bind(this, track);
297
+            track.audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
298
+            track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED,
299
+                                   track.muteHandler);
300
+            track.addEventListener(JitsiTrackEvents.TRACK_STOPPED,
301
+                                   track.stopHandler);
302
+            track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
303
+                                   track.audioLevelHandler);
304
+            this.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
305
+            resolve(track);
306
+        }.bind(this));
303
     }.bind(this));
307
     }.bind(this));
304
 };
308
 };
305
 
309
 
330
 /**
334
 /**
331
  * Removes JitsiLocalTrack object to the conference.
335
  * Removes JitsiLocalTrack object to the conference.
332
  * @param track the JitsiLocalTrack object.
336
  * @param track the JitsiLocalTrack object.
337
+ * @returns {Promise}
333
  */
338
  */
334
 JitsiConference.prototype.removeTrack = function (track) {
339
 JitsiConference.prototype.removeTrack = function (track) {
335
     if(!this.room){
340
     if(!this.room){
336
         if(this.rtc)
341
         if(this.rtc)
337
             this.rtc.removeLocalStream(track);
342
             this.rtc.removeLocalStream(track);
338
-        return;
343
+        return Promise.resolve();
339
     }
344
     }
340
-    this.room.removeStream(track.getOriginalStream(), function(){
341
-        this.rtc.removeLocalStream(track);
342
-        track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
343
-        track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
344
-        track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
345
-        this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
345
+    return new Promise(function (resolve) {
346
+        this.room.removeStream(track.getOriginalStream(), function(){
347
+            this.rtc.removeLocalStream(track);
348
+            track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
349
+            track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
350
+            track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
351
+            this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
352
+            resolve();
353
+        }.bind(this));
346
     }.bind(this));
354
     }.bind(this));
347
 };
355
 };
348
 
356
 

+ 1
- 1
modules/RTC/ScreenObtainer.js 查看文件

332
                 failCallback(chrome.runtime.lastError);
332
                 failCallback(chrome.runtime.lastError);
333
                 return;
333
                 return;
334
             }
334
             }
335
-            logger.log("Response from extension: " + response);
335
+            logger.log("Response from extension: ", response);
336
             if (response.streamId) {
336
             if (response.streamId) {
337
                 GUM(
337
                 GUM(
338
                     ['desktop'],
338
                     ['desktop'],

正在加载...
取消
保存