diff --git a/src/js/client.js b/src/js/client.js index dc2688023..1f3535ced 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -495,6 +495,20 @@ angular.module('Application').service('Client', ['$http', '$interval', 'md5', 'N }).error(defaultErrorHandler(callback)); }; + Client.prototype.setSpacesConfig = function (spacesConfig, callback) { + post('/api/v1/settings/spaces_config', spacesConfig).success(function(data, status) { + if (status !== 200) return callback(new ClientError(status, data)); + callback(null); + }).error(defaultErrorHandler(callback)); + }; + + Client.prototype.getSpacesConfig = function (callback) { + get('/api/v1/settings/spaces_config').success(function(data, status) { + if (status !== 200) return callback(new ClientError(status, data)); + callback(null, data); + }).error(defaultErrorHandler(callback)); + }; + Client.prototype.getUpdateInfo = function (callback) { get('/api/v1/cloudron/update').success(function(data, status) { if (status !== 200) return callback(new ClientError(status, data)); diff --git a/src/views/settings.html b/src/views/settings.html index 83018915e..0e6f3d0aa 100644 --- a/src/views/settings.html +++ b/src/views/settings.html @@ -324,4 +324,28 @@ + + +
+

Cloudron Spaces

+
+ +
+
+
+

Cloudron Spaces allows users to install and run apps of their own

+


{{ spaces.error }}

+
+
+ +
+
+ +
+
+
+ diff --git a/src/views/settings.js b/src/views/settings.js index bb90e4c25..e065ba020 100644 --- a/src/views/settings.js +++ b/src/views/settings.js @@ -64,6 +64,23 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca } }; + $scope.spaces = { + error: '', + busy: false, + enabled: false, + + submit: function () { + $scope.spaces.error = null; + $scope.spaces.busy = true; + + Client.setSpacesConfig({ enabled: !$scope.spaces.enabled }, function (error) { + if (error) $scope.spaces.error = error.message; + + getSpacesConfig(); + }); + } + }; + $scope.planChange = { busy: false, error: {}, @@ -296,6 +313,17 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca }); } + function getSpacesConfig() { + $scope.spaces.busy = true; + + Client.getSpacesConfig(function (error, result) { + if (error) return console.error(error); + + $scope.spaces.busy = false; + $scope.spaces.enabled = result.enabled; + }); + } + function getSubscription() { AppStore.getSubscription($scope.appstoreConfig, function (error, result) { if (error) return console.error(error); @@ -405,6 +433,7 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca Client.onReady(function () { getAutoupdatePattern(); + getSpacesConfig(); if ($scope.config.provider === 'caas') { Client.getCaasConfig(function (error, caasConfig) {