Show subscription indicator in navbar

This commit is contained in:
Johannes Zellner
2017-06-06 11:51:28 +02:00
parent fe0e4000a6
commit 32fa3b8a51
2 changed files with 58 additions and 2 deletions

View File

@@ -139,6 +139,26 @@
</div>
</div>
<!-- Modal setup subscription -->
<div class="modal fade" id="setupSubscriptionModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title" id="updateModalLabel">Setup Auto Update Subscription</h4>
</div>
<div class="modal-body">
To get effortless automatic app and platform updates, subscribe to our Cloudron.io plans.<br/>
<br/>
See detailed information <a ng-href="{{ config.webServerOrigin + '/pricing.html' }}" target="_blank">here</a>.
</div>
<div class="modal-footer">
<a class="btn btn-success" ng-href="{{ config.webServerOrigin + '/console.html#/userprofile?view=subscriptions' }}" target="_blank">Setup</a>
</div>
</div>
</div>
</div>
<div class="animateMe ng-hide" ng-show="initialized">
<!-- Navigation -->
@@ -163,6 +183,11 @@
<span class="badge badge-success">Update available</span>
</a>
</li>
<li ng-show="currentSubscription.plan && currentSubscription.plan.id === 'free' && !config.update.box && user.admin">
<a ng-href="" style="cursor: pointer" data-toggle="modal" data-target="#setupSubscriptionModal">
<span class="badge badge-success">Setup Auto Update Subscription</span>
</a>
</li>
<li>
<a ng-class="{ active: isActive('/apps')}" href="#/apps"><i class="fa fa-cloud-download fa-fw"></i> My Apps</a>
</li>

View File

@@ -1,12 +1,14 @@
'use strict';
angular.module('Application').controller('MainController', ['$scope', '$route', '$interval', 'Client', function ($scope, $route, $interval, Client) {
angular.module('Application').controller('MainController', ['$scope', '$route', '$interval', '$timeout', 'Client', 'AppStore', function ($scope, $route, $interval, $timeout, Client, AppStore) {
$scope.initialized = false;
$scope.user = Client.getUserInfo();
$scope.installedApps = Client.getInstalledApps();
$scope.config = {};
$scope.status = {};
$scope.client = Client;
$scope.currentSubscription = null;
$scope.appstoreConfig = {};
$scope.update = {
busy: false,
@@ -99,6 +101,31 @@ angular.module('Application').controller('MainController', ['$scope', '$route',
});
}
function getSubscription() {
Client.getAppstoreConfig(function (error, result) {
if (error) return console.error(error);
if (result.token) {
$scope.appstoreConfig = result;
AppStore.getProfile(result.token, function (error, result) {
if (error) return console.error(error);
$scope.appstoreConfig.profile = result;
AppStore.getSubscription($scope.appstoreConfig, function (error, result) {
if (error) return console.error(error);
$scope.currentSubscription = result;
// check again to give more immediate feedback once a subscription was setup
if (result.plan.id === 'free') $timeout(getSubscription, 5000);
});
});
}
});
}
Client.getStatus(function (error, status) {
if (error) return $scope.error(error);
@@ -159,7 +186,11 @@ angular.module('Application').controller('MainController', ['$scope', '$route',
$scope.initialized = true;
if ($scope.user.admin) runConfigurationChecks();
if ($scope.user.admin) {
runConfigurationChecks();
if ($scope.config.provider !== 'caas') getSubscription();
}
});
});
});