blob: 074a422bde324b07fa65509c9d02df14a4c0b9d5 [file] [log] [blame]
'use strict';
// See https://github.com/jshint/jshint/issues/1747 for context
/* global -Promise */
var Promise = require('es6-promise').Promise;
module.exports = function(options) {
options = options || {};
var manifestURL = options.manifestURL;
var client = options.client;
return new Promise(function(resolve, reject) {
if (manifestURL === undefined || client === undefined) {
return reject(new Error('App manifestURL and client are required to launch an app'));
}
getWebAppsActor(client).then(function(webAppsActor) {
launchApp(webAppsActor, manifestURL)
.then(function(result) {
resolve(result);
}, function(err) {
reject(err);
});
});
});
};
function getWebAppsActor(client) {
return new Promise(function(resolve, reject) {
client.getWebapps(function(err, webAppsActor) {
if (err) {
return reject(err);
}
resolve(webAppsActor);
});
});
}
function launchApp(webAppsActor, appManifestURL) {
return new Promise(function(resolve, reject) {
webAppsActor.launch(appManifestURL, function(err, response) {
if (err) {
return reject(err);
}
resolve(response);
});
});
}