瀏覽代碼

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,6 +274,7 @@ JitsiConference.prototype.setSubject = function (subject) {
274 274
 /**
275 275
  * Adds JitsiLocalTrack object to the conference.
276 276
  * @param track the JitsiLocalTrack object.
277
+ * @returns {Promise<JitsiLocalTrack>}
277 278
  */
278 279
 JitsiConference.prototype.addTrack = function (track) {
279 280
     if (track.isVideoTrack()) {
@@ -285,21 +286,24 @@ JitsiConference.prototype.addTrack = function (track) {
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 307
     }.bind(this));
304 308
 };
305 309
 
@@ -330,19 +334,23 @@ JitsiConference.prototype._fireMuteChangeEvent = function (track) {
330 334
 /**
331 335
  * Removes JitsiLocalTrack object to the conference.
332 336
  * @param track the JitsiLocalTrack object.
337
+ * @returns {Promise}
333 338
  */
334 339
 JitsiConference.prototype.removeTrack = function (track) {
335 340
     if(!this.room){
336 341
         if(this.rtc)
337 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 354
     }.bind(this));
347 355
 };
348 356
 

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

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

Loading…
取消
儲存