Browse Source

Try to get screensharing auto started after inline installation of extension.

pull/79/head
Simon Eisenmann 12 years ago
parent
commit
564db6de0a
  1. 38
      static/js/services/screensharing.js

38
static/js/services/screensharing.js

@ -21,7 +21,7 @@
define(['underscore', 'webrtc.adapter'], function(_) { define(['underscore', 'webrtc.adapter'], function(_) {
// screensharing // screensharing
return ["$window", "$q", "chromeExtension", function($window, $q, chromeExtension) { return ["$window", "$q", "$timeout", "chromeExtension", function($window, $q, $timeout, chromeExtension) {
var Screensharing = function() { var Screensharing = function() {
this.autoinstall = false; this.autoinstall = false;
@ -120,6 +120,7 @@ define(['underscore', 'webrtc.adapter'], function(_) {
if (!this.supported && chromeExtension.autoinstall.install) { if (!this.supported && chromeExtension.autoinstall.install) {
this.supported = this.autoinstall = true; this.supported = this.autoinstall = true;
var that = this; var that = this;
var waiting = false;
this.prepare = function(options) { this.prepare = function(options) {
var d = $q.defer(); var d = $q.defer();
var install = chromeExtension.autoinstall.install(); var install = chromeExtension.autoinstall.install();
@ -129,13 +130,33 @@ define(['underscore', 'webrtc.adapter'], function(_) {
// We are still on auto install - must have failed. // We are still on auto install - must have failed.
d.reject("Auto install failed"); d.reject("Auto install failed");
} else { } else {
// Seems we can do it now. // Seems we triggered install - this can take a while.
var prepare = that.prepare(options); console.log("Auto install success");
prepare.then(function(id) { waiting = true;
d.resolve(id); $timeout(function() {
}, function(err) { var starter = function() {
d.reject(err); waiting = false;
}); var prepare = that.prepare(options);
prepare.then(function(id) {
d.resolve(id);
}, function(err) {
d.reject(err);
});
};
if (!that.autoinstall && that.supported) {
// Got something.
starter();
} else {
// Wait for it.
chromeExtension.e.one("available", function() {
$timeout(function() {
if (waiting && !that.autoinstall && that.supported) {
starter();
}
}, 0);
});
}
}, 0);
} }
}, function(err) { }, function(err) {
d.reject(err); d.reject(err);
@ -146,6 +167,7 @@ define(['underscore', 'webrtc.adapter'], function(_) {
if (chromeExtension.autoinstall.cancel) { if (chromeExtension.autoinstall.cancel) {
chromeExtension.autoinstall.cancel(); chromeExtension.autoinstall.cancel();
} }
waiting = false;
}; };
} else { } else {
this.autoinstall = false; this.autoinstall = false;

Loading…
Cancel
Save