Files
cloudron-box/src/views/support.js

114 lines
3.4 KiB
JavaScript
Raw Normal View History

2018-01-22 13:01:38 -08:00
'use strict';
/* global angular:false */
/* global $:false */
2018-01-22 13:01:38 -08:00
angular.module('Application').controller('SupportController', ['$scope', '$location', 'Client', function ($scope, $location, Client) {
2020-02-24 12:56:13 +01:00
Client.onReady(function () { if (!Client.getUserInfo().isAtLeastAdmin) $location.path('/'); });
2021-10-19 15:14:52 +02:00
$scope.ready = false;
2018-01-22 13:01:38 -08:00
$scope.config = Client.getConfig();
$scope.user = Client.getUserInfo();
$scope.apps = Client.getInstalledApps();
2020-02-05 14:15:46 -08:00
$scope.supportConfig = null;
2018-01-22 13:01:38 -08:00
$scope.feedback = {
error: null,
2019-05-28 10:04:18 -07:00
result: null,
2018-01-22 13:01:38 -08:00
busy: false,
enableSshSupport: false,
2018-01-22 13:01:38 -08:00
subject: '',
type: 'app_error',
description: '',
appId: '',
altEmail: ''
2018-01-22 13:01:38 -08:00
};
$scope.toggleSshSupportError = '';
2018-01-22 13:01:38 -08:00
$scope.sshSupportEnabled = false;
$scope.subscription = null;
2018-01-22 13:01:38 -08:00
function resetFeedback() {
$scope.feedback.enableSshSupport = false;
2018-01-22 13:01:38 -08:00
$scope.feedback.subject = '';
$scope.feedback.description = '';
$scope.feedback.type = 'app_error';
$scope.feedback.appId = '';
$scope.feedback.altEmail = '';
2018-01-22 13:01:38 -08:00
$scope.feedbackForm.$setUntouched();
$scope.feedbackForm.$setPristine();
}
$scope.submitFeedback = function () {
$scope.feedback.busy = true;
2019-05-28 10:04:18 -07:00
$scope.feedback.result = null;
2018-01-22 13:01:38 -08:00
$scope.feedback.error = null;
var data = {
enableSshSupport: $scope.feedback.enableSshSupport,
subject: $scope.feedback.subject,
description: $scope.feedback.description,
type: $scope.feedback.type,
appId: $scope.feedback.appId,
altEmail: $scope.feedback.altEmail
};
Client.createTicket(data, function (error, result) {
2018-01-22 13:01:38 -08:00
if (error) {
$scope.feedback.error = error.message;
} else {
2019-05-28 10:04:18 -07:00
$scope.feedback.result = result;
2018-01-22 13:01:38 -08:00
resetFeedback();
}
$scope.feedback.busy = false;
// refresh state
Client.getRemoteSupport(function (error, enabled) {
if (error) return console.error(error);
$scope.sshSupportEnabled = enabled;
});
2018-01-22 13:01:38 -08:00
});
};
$scope.toggleSshSupport = function () {
$scope.toggleSshSupportError = '';
Client.enableRemoteSupport(!$scope.sshSupportEnabled, function (error) {
if (error) {
if (error.statusCode === 412 || error.statusCode === 417) $scope.toggleSshSupportError = error.message;
else console.error(error);
return;
}
$scope.sshSupportEnabled = !$scope.sshSupportEnabled;
});
2018-01-22 13:01:38 -08:00
};
2021-10-19 15:14:52 +02:00
Client.onReady(function () {
Client.getSubscription(function (error, result) {
if (error && error.statusCode === 412) return; // not yet registered
if (error) return console.error(error);
$scope.subscription = result;
2021-10-19 15:14:52 +02:00
Client.getSupportConfig(function (error, supportConfig) {
if (error) return console.error(error);
2018-01-22 13:01:38 -08:00
2021-10-19 15:14:52 +02:00
$scope.supportConfig = supportConfig;
2021-10-19 15:14:52 +02:00
Client.getRemoteSupport(function (error, enabled) {
if (error) return console.error(error);
2020-02-05 14:15:46 -08:00
2021-10-19 15:14:52 +02:00
$scope.sshSupportEnabled = enabled;
$scope.ready = true;
});
2020-02-05 14:15:46 -08:00
});
2018-01-22 13:01:38 -08:00
});
});
$('.modal-backdrop').remove();
}]);