diff --git a/webadmin/src/js/appstore.js b/webadmin/src/js/appstore.js index 1e3cc72c9..ce812921c 100644 --- a/webadmin/src/js/appstore.js +++ b/webadmin/src/js/appstore.js @@ -63,6 +63,17 @@ angular.module('Application').service('AppStore', ['$http', 'Client', function ( }); }; + AppStore.prototype.getAppByIdAndVersion = function (appId, version, callback) { + if (Client.getConfig().apiServerOrigin === null) return callback(new AppStoreError(420, 'Enhance Your Calm')); + + $http.get(Client.getConfig().apiServerOrigin + '/api/v1/apps/' + appId + '/versions/' + version).success(function (data, status) { + if (status !== 200) return callback(new AppStoreError(status, data)); + return callback(null, data); + }).error(function (data, status) { + return callback(new AppStoreError(status, data)); + }); + }; + AppStore.prototype.getManifest = function (appId, callback) { if (Client.getConfig().apiServerOrigin === null) return callback(new AppStoreError(420, 'Enhance Your Calm')); diff --git a/webadmin/src/views/appstore.html b/webadmin/src/views/appstore.html index 5f3950c29..9eb75d6ae 100644 --- a/webadmin/src/views/appstore.html +++ b/webadmin/src/views/appstore.html @@ -88,6 +88,23 @@ + + +
diff --git a/webadmin/src/views/appstore.js b/webadmin/src/views/appstore.js index 1e38b31ca..2f4a4b439 100644 --- a/webadmin/src/views/appstore.js +++ b/webadmin/src/views/appstore.js @@ -20,6 +20,10 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca mediaLinks: [] }; + $scope.appNotFound = { + appId: '', + version: '' + }; $scope.feedback = { error: null, @@ -169,6 +173,13 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca } }; + $scope.showAppNotFound = function (appId, version) { + $scope.appNotFound.appId = appId; + $scope.appNotFound.version = version; + + $('#appNotFoundModal').modal('show'); + }; + $scope.doInstall = function () { $scope.appInstall.busy = true; $scope.appInstall.error.other = null; @@ -226,11 +237,26 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$loca // show install app dialog immediately if an app id was passed in the query if ($routeParams.appId) { - var found = apps.filter(function (app) { - return (app.id === $routeParams.appId) && ($routeParams.version ? $routeParams.version === app.manifest.version : true); - }); - if (found.length) { - $scope.showInstall(found[0]); + if ($routeParams.version) { + AppStore.getAppByIdAndVersion($routeParams.appId, $routeParams.version, function (error, result) { + if (error) { + $scope.showAppNotFound($routeParams.appId, $routeParams.version); + console.error(error); + return; + } + + $scope.showInstall(result); + }); + } else { + var found = apps.filter(function (app) { + return (app.id === $routeParams.appId) && ($routeParams.version ? $routeParams.version === app.manifest.version : true); + }); + + if (found.length) { + $scope.showInstall(found[0]); + } else { + $scope.showAppNotFound($routeParams.appId, null); + } } }