diff --git a/src/js/client.js b/src/js/client.js index 8b31d60d0..1cbd2fc84 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -338,6 +338,7 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout // window.location fallback for websocket connections which do not have relative uris this.apiOrigin = '<%= apiOrigin %>' || window.location.origin; this.avatar = ''; + this._availableLanguages = ['en']; this._appstoreAppCache = []; this.resetAvatar(); @@ -498,6 +499,10 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout return this._config; }; + Client.prototype.getAvailableLanguages = function () { + return this._availableLanguages; + }; + Client.prototype.setToken = function (accessToken) { if (!accessToken) localStorage.removeItem('token'); else localStorage.token = accessToken; @@ -988,15 +993,6 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.getAvailableLanguages = function (callback) { - get('/api/v1/settings/language', null, function (error, data, status) { - if (error) return callback(error); - if (status !== 200) return callback(new ClientError(status, data)); - - callback(null, data.language); - }); - }; - Client.prototype.getRemoteSupport = function (callback) { get('/api/v1/support/remote_support', null, function (error, data, status) { if (error) return callback(error); @@ -1863,6 +1859,19 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; + Client.prototype.refreshAvailableLanguages = function (callback) { + var that = this; + + get('/api/v1/cloudron/languages', null, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + + angular.copy(data.languages, that._availableLanguages); + + callback(null, data.languages); + }); + }; + Client.prototype._appPostProcess = function (app) { // calculate the icon paths app.iconUrl = app.iconUrl ? (this.apiOrigin + app.iconUrl + '?access_token=' + token + '&' + app.manifest.version) : null; diff --git a/src/js/main.js b/src/js/main.js index 1294bf5d9..4bef2cefb 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -122,24 +122,28 @@ angular.module('Application').controller('MainController', ['$scope', '$route', Client.refreshConfig(function (error) { if (error) return Client.initError(error, init); - Client.refreshInstalledApps(function (error) { + Client.refreshAvailableLanguages(function (error) { if (error) return Client.initError(error, init); - // now mark the Client to be ready - Client.setReady(); + Client.refreshInstalledApps(function (error) { + if (error) return Client.initError(error, init); - $scope.config = Client.getConfig(); + // now mark the Client to be ready + Client.setReady(); - $scope.initialized = true; + $scope.config = Client.getConfig(); - if (Client.getConfig().mandatory2FA && !Client.getUserInfo().twoFactorAuthenticationEnabled) { - $location.path('/profile').search({ setup2fa: true }); - return; - } + $scope.initialized = true; - refreshNotifications(true); + if (Client.getConfig().mandatory2FA && !Client.getUserInfo().twoFactorAuthenticationEnabled) { + $location.path('/profile').search({ setup2fa: true }); + return; + } - $scope.updateSubscriptionStatus(); + refreshNotifications(true); + + $scope.updateSubscriptionStatus(); + }); }); }); }); diff --git a/src/views/settings.html b/src/views/settings.html index 028a3c78e..f630bdb90 100644 --- a/src/views/settings.html +++ b/src/views/settings.html @@ -230,7 +230,7 @@

{{ 'settings.language.description' | tr }}

- +
diff --git a/src/views/settings.js b/src/views/settings.js index 19b472753..90fb56840 100644 --- a/src/views/settings.js +++ b/src/views/settings.js @@ -203,16 +203,16 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca error: '', language: '', currentLanguage: '', - availableLanguages: window.languages, + availableLanguages: Client.getAvailableLanguages(), submit: function () { - if ($scope.language.language === $scope.timeZone.currentLanguage) return; + if ($scope.language.language === $scope.language.currentLanguage) return; $scope.language.error = ''; $scope.language.busy = true; $scope.language.success = false; - Client.setLanguage($scope.language.language.key, function (error) { + Client.setLanguage($scope.language.language, function (error) { if (error) $scope.language.error = error.message; else $scope.language.currentLanguage = $scope.language.language; @@ -297,7 +297,7 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca Client.getLanguage(function (error, languageKey) { if (error) return console.error(error); - $scope.language.currentLanguage = window.languages.find(function (t) { return t.key === languageKey; }); + $scope.language.currentLanguage = Client.getAvailableLanguages().find(function (key) { return key === languageKey; }); $scope.language.language = $scope.language.currentLanguage; }); }