Skip to content

Commit

Permalink
show tip when language resource is updated
Browse files Browse the repository at this point in the history
  • Loading branch information
mayswind committed Aug 20, 2019
1 parent d63058c commit ce1c2fe
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 5 deletions.
3 changes: 2 additions & 1 deletion src/langs/zh_Hans.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,9 @@ Downloading Count=正在下载数量
Waiting Count=正在等待数量
Stopped Count=已停止数量
You have disabled notification in your browser. You should change your browser's settings before you enable this function.=您已经在浏览器中禁用通知功能. 如需使用此功能, 请修改您浏览器的设置.
Language resource has been updated, please reload the page for the changes to take effect.=语言资源已经更新, 请重新加载页面使其生效.
Configuration has been modified, please reload the page for the changes to take effect.=配置已经修改, 请重新加载页面使其生效.
Reload Page=重新加载页面
Reload AriaNg=重新加载 AriaNg
Show Secret=显示密钥
Hide Secret=隐藏密钥
Aria2 Version=Aria2 版本
Expand Down
3 changes: 2 additions & 1 deletion src/langs/zh_Hant.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,9 @@ Current RPC Alias=目前 RPC 別名
Waiting Count=正在等待數量
Stopped Count=已停止數量
You have disabled notification in your browser. You should change your browser's settings before you enable this function.=您已經在瀏覽器中停用通知功能. 如需使用此功能, 請修改您瀏覽器的設定.
Language resource has been updated, please reload the page for the changes to take effect.=語言資源已經更新, 請重新載入頁面使其生效.
Configuration has been modified, please reload the page for the changes to take effect.=配置已經修改, 請重新載入頁面使其生效.
Reload Page=重新載入頁面
Reload AriaNg=重新載入 AriaNg
Show Secret=顯示金鑰
Hide Secret=隱藏金鑰
Aria2 Version=Aria2 版本
Expand Down
3 changes: 2 additions & 1 deletion src/scripts/config/defaultLanguage.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,9 @@
'Waiting Count': 'Waiting Count',
'Stopped Count': 'Stopped Count',
'You have disabled notification in your browser. You should change your browser\'s settings before you enable this function.': 'You have disabled notification in your browser. You should change your browser\'s settings before you enable this function.',
'Language resource has been updated, please reload the page for the changes to take effect.': 'Language resource has been updated, please reload the page for the changes to take effect.',
'Configuration has been modified, please reload the page for the changes to take effect.': 'Configuration has been modified, please reload the page for the changes to take effect.',
'Reload Page': 'Reload Page',
'Reload AriaNg': 'Reload AriaNg',
'Show Secret': 'Show Secret',
'Hide Secret': 'Hide Secret',
'Aria2 Version': 'Aria2 Version',
Expand Down
6 changes: 5 additions & 1 deletion src/scripts/core/root.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function () {
'use strict';

angular.module('ariaNg').run(['$rootScope', '$location', '$document', 'ariaNgCommonService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgSettingService', 'aria2TaskService', function ($rootScope, $location, $document, ariaNgCommonService, ariaNgLocalizationService, ariaNgLogService, ariaNgSettingService, aria2TaskService) {
angular.module('ariaNg').run(['$window', '$rootScope', '$location', '$document', 'ariaNgCommonService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgSettingService', 'aria2TaskService', function ($window, $rootScope, $location, $document, ariaNgCommonService, ariaNgLocalizationService, ariaNgLogService, ariaNgSettingService, aria2TaskService) {
var isUrlMatchUrl2 = function (url, url2) {
if (url === url2) {
return true;
Expand Down Expand Up @@ -324,6 +324,10 @@
}
};

$rootScope.refreshPage = function () {
$window.location.reload();
};

ariaNgSettingService.onFirstAccess(function () {
ariaNgLocalizationService.notifyInPage('', 'Tap to configure and get started with AriaNg.', {
delay: false,
Expand Down
47 changes: 46 additions & 1 deletion src/scripts/services/ariaNgLanguageLoader.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function () {
'use strict';

angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLogService', 'ariaNgStorageService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLogService, ariaNgStorageService) {
angular.module('ariaNg').factory('ariaNgLanguageLoader', ['$http', '$q', 'ariaNgConstants', 'ariaNgLanguages', 'ariaNgAssetsCacheService', 'ariaNgNotificationService', 'ariaNgLocalizationService', 'ariaNgLogService', 'ariaNgStorageService', function ($http, $q, ariaNgConstants, ariaNgLanguages, ariaNgAssetsCacheService, ariaNgNotificationService, ariaNgLocalizationService, ariaNgLogService, ariaNgStorageService) {
var getKeyValuePair = function (line) {
for (var i = 0; i < line.length; i++) {
if (i > 0 && line.charAt(i - 1) !== '\\' && line.charAt(i) === '=') {
Expand Down Expand Up @@ -81,6 +81,33 @@
return langObj;
};

var isLanguageResourceEquals = function (langObj1, langObj2) {
if (!angular.isObject(langObj1) || !angular.isObject(langObj2)) {
return false;
}

for (var key in langObj2) {
if (!langObj2.hasOwnProperty(key)) {
continue;
}

var value = langObj2[key];

if (angular.isObject(value)) {
var result = isLanguageResourceEquals(langObj1[key], value);
if (!result) {
return false;
}
} else {
if (value !== langObj1[key]) {
return false;
}
}
}

return true;
};

return function (options) {
var deferred = $q.defer();

Expand Down Expand Up @@ -111,7 +138,25 @@
method: 'GET'
}).then(function onSuccess(response) {
var languageObject = getLanguageObject(response.data);
var languageUpdated = false;

if (languageResource) {
languageUpdated = !isLanguageResourceEquals(languageResource, languageObject);
}

ariaNgStorageService.set(languageKey, languageObject);

if (languageUpdated) {
ariaNgLogService.info("[ariaNgLanguageLoader] load language resource successfully, and resource is updated");
ariaNgLocalizationService.notifyInPage('', 'Language resource has been updated, please reload the page for the changes to take effect.', {
delay: false,
type: 'info',
templateUrl: 'views/notification-reloadable.html'
});
} else {
ariaNgLogService.info("[ariaNgLanguageLoader] load language resource successfully, but resource is not updated");
}

return deferred.resolve(languageObject);
}).catch(function onError(response) {
ariaNgLogService.warn('[ariaNgLanguageLoader] cannot get language resource');
Expand Down
6 changes: 6 additions & 0 deletions src/views/notification-reloadable.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<div class="ui-notification custom-template">
<div class="message" ng-bind-html="message"></div>
<div class="message">
<a class="btn btn-small btn-primary close-notification" ng-click="refreshPage()" translate>Reload AriaNg</a>
</div>
</div>

0 comments on commit ce1c2fe

Please sign in to comment.