2016-05-13 18:09:12 +02:00
|
|
|
(function () {
|
|
|
|
'use strict';
|
|
|
|
|
2018-08-12 14:47:48 +02:00
|
|
|
angular.module('ariaNg').factory('ariaNgSettingService', ['$window', '$location', '$filter', 'ariaNgConstants', 'ariaNgDefaultOptions', 'ariaNgLanguages', 'ariaNgCommonService', 'ariaNgLogService', 'ariaNgStorageService', function ($window, $location, $filter, ariaNgConstants, ariaNgDefaultOptions, ariaNgLanguages, ariaNgCommonService, ariaNgLogService, ariaNgStorageService) {
|
2018-08-11 06:41:55 +02:00
|
|
|
var browserFeatures = (function () {
|
2018-08-12 14:47:48 +02:00
|
|
|
var supportLocalStroage = ariaNgStorageService.isLocalStorageSupported();
|
|
|
|
var supportCookies = ariaNgStorageService.isCookiesSupported();
|
2018-08-11 06:41:55 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
localStroage: supportLocalStroage,
|
|
|
|
cookies: supportCookies
|
|
|
|
};
|
|
|
|
})();
|
|
|
|
var browserSupportStorage = browserFeatures.localStroage || browserFeatures.cookies;
|
|
|
|
|
2016-07-22 18:17:47 +02:00
|
|
|
var onFirstVisitCallbacks = [];
|
2018-08-12 11:00:04 +02:00
|
|
|
var firstVisitCallbackFired = false;
|
2016-11-06 15:41:28 +01:00
|
|
|
var sessionSettings = {
|
|
|
|
debugMode: false
|
|
|
|
};
|
2016-07-22 18:17:47 +02:00
|
|
|
|
|
|
|
var fireFirstVisitEvent = function () {
|
2018-08-11 06:41:55 +02:00
|
|
|
if (!browserSupportStorage) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-08-12 11:00:04 +02:00
|
|
|
if (firstVisitCallbackFired || !angular.isArray(onFirstVisitCallbacks) || onFirstVisitCallbacks.length < 1) {
|
2016-07-22 18:17:47 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 0; i < onFirstVisitCallbacks.length; i++) {
|
|
|
|
var callback = onFirstVisitCallbacks[i];
|
|
|
|
callback();
|
|
|
|
}
|
2018-08-11 05:29:07 +02:00
|
|
|
|
2018-08-12 11:00:04 +02:00
|
|
|
firstVisitCallbackFired = true;
|
2016-07-22 18:17:47 +02:00
|
|
|
};
|
|
|
|
|
2017-10-08 16:48:30 +02:00
|
|
|
var isInsecureProtocolDisabled = function () {
|
|
|
|
var protocol = $location.protocol();
|
|
|
|
|
|
|
|
return protocol === 'https';
|
|
|
|
};
|
|
|
|
|
2017-06-18 09:04:13 +02:00
|
|
|
var getLanguageNameFromAlias = function (alias) {
|
|
|
|
for (var langName in ariaNgLanguages) {
|
|
|
|
if (!ariaNgLanguages.hasOwnProperty(langName)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
var language = ariaNgLanguages[langName];
|
|
|
|
var aliases = language.aliases;
|
|
|
|
|
|
|
|
if (!angular.isArray(aliases) || aliases.length < 1) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 0; i < aliases.length; i++) {
|
|
|
|
if (aliases[i] === alias) {
|
|
|
|
return langName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
};
|
|
|
|
|
2016-07-13 17:35:23 +02:00
|
|
|
var getDefaultLanguage = function () {
|
|
|
|
var browserLang = $window.navigator.browserLanguage ? $window.navigator.browserLanguage : $window.navigator.language;
|
|
|
|
|
|
|
|
if (!browserLang) {
|
|
|
|
return ariaNgDefaultOptions.language;
|
|
|
|
}
|
|
|
|
|
2016-12-10 18:50:25 +01:00
|
|
|
browserLang = browserLang.replace(/\-/g, '_');
|
2016-07-13 17:35:23 +02:00
|
|
|
|
2017-06-18 09:04:13 +02:00
|
|
|
if (!ariaNgLanguages[browserLang]) {
|
|
|
|
var languageName = getLanguageNameFromAlias(browserLang);
|
|
|
|
|
|
|
|
if (languageName) {
|
|
|
|
browserLang = languageName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-07-13 17:35:23 +02:00
|
|
|
if (!ariaNgLanguages[browserLang]) {
|
|
|
|
return ariaNgDefaultOptions.language;
|
|
|
|
}
|
|
|
|
|
|
|
|
return browserLang;
|
|
|
|
};
|
|
|
|
|
2017-06-18 09:04:13 +02:00
|
|
|
var getLanguageNameFromAliasOrDefaultLanguage = function (lang) {
|
|
|
|
var languageName = getLanguageNameFromAlias(lang);
|
|
|
|
|
|
|
|
if (languageName) {
|
|
|
|
return languageName;
|
|
|
|
}
|
|
|
|
|
|
|
|
return getDefaultLanguage();
|
|
|
|
};
|
|
|
|
|
2016-05-16 18:59:27 +02:00
|
|
|
var getDefaultRpcHost = function () {
|
2017-03-05 16:13:34 +01:00
|
|
|
var currentHost = $location.host();
|
2016-08-01 16:18:00 +02:00
|
|
|
|
|
|
|
if (currentHost) {
|
|
|
|
return currentHost;
|
|
|
|
}
|
|
|
|
|
|
|
|
return ariaNgConstants.defaultHost;
|
2016-05-16 17:41:39 +02:00
|
|
|
};
|
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
var setOptions = function (options) {
|
2018-08-12 14:47:48 +02:00
|
|
|
return ariaNgStorageService.set(ariaNgConstants.optionStorageKey, options);
|
2016-05-13 18:09:12 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
var getOptions = function () {
|
2018-08-12 14:47:48 +02:00
|
|
|
var options = ariaNgStorageService.get(ariaNgConstants.optionStorageKey);
|
2016-05-13 18:09:12 +02:00
|
|
|
|
2017-06-18 09:04:13 +02:00
|
|
|
if (options && !ariaNgLanguages[options.language]) {
|
|
|
|
options.language = getLanguageNameFromAliasOrDefaultLanguage(options.language);
|
|
|
|
}
|
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
if (!options) {
|
|
|
|
options = angular.extend({}, ariaNgDefaultOptions);
|
2016-07-13 17:35:23 +02:00
|
|
|
options.language = getDefaultLanguage();
|
|
|
|
|
2017-10-08 16:48:30 +02:00
|
|
|
if (!options.rpcHost) {
|
|
|
|
initRpcSettingWithDefaultHostAndProtocol(options);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (angular.isArray(options.extendRpcServers)) {
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
var rpcSetting = options.extendRpcServers[i];
|
|
|
|
|
|
|
|
if (!rpcSetting.rpcHost) {
|
|
|
|
initRpcSettingWithDefaultHostAndProtocol(rpcSetting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
setOptions(options);
|
2016-07-22 18:17:47 +02:00
|
|
|
fireFirstVisitEvent();
|
2016-05-13 18:09:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return options;
|
|
|
|
};
|
|
|
|
|
2017-06-18 08:00:14 +02:00
|
|
|
var clearAll = function () {
|
2018-08-12 14:47:48 +02:00
|
|
|
return ariaNgStorageService.clearAll();
|
2017-06-18 08:00:14 +02:00
|
|
|
};
|
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
var getOption = function (key) {
|
2016-05-16 15:32:15 +02:00
|
|
|
var options = getOptions();
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
if (angular.isUndefined(options[key]) && angular.isDefined(ariaNgDefaultOptions[key])) {
|
2016-05-16 15:32:15 +02:00
|
|
|
options[key] = ariaNgDefaultOptions[key];
|
|
|
|
setOptions(options);
|
|
|
|
}
|
|
|
|
|
|
|
|
return options[key];
|
2016-05-13 18:09:12 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
var setOption = function (key, value) {
|
|
|
|
var options = getOptions();
|
|
|
|
options[key] = value;
|
|
|
|
|
|
|
|
setOptions(options);
|
|
|
|
};
|
|
|
|
|
2017-10-08 16:48:30 +02:00
|
|
|
var initRpcSettingWithDefaultHostAndProtocol = function (setting) {
|
|
|
|
setting.rpcHost = getDefaultRpcHost();
|
|
|
|
|
|
|
|
if (isInsecureProtocolDisabled()) {
|
|
|
|
setting.protocol = ariaNgConstants.defaultSecureProtocol;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
var cloneRpcSetting = function (setting) {
|
|
|
|
return {
|
|
|
|
rpcAlias: setting.rpcAlias,
|
|
|
|
rpcHost: setting.rpcHost,
|
|
|
|
rpcPort: setting.rpcPort,
|
|
|
|
rpcInterface: setting.rpcInterface,
|
|
|
|
protocol: setting.protocol,
|
|
|
|
httpMethod: setting.httpMethod,
|
|
|
|
secret: setting.secret
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
var createNewRpcSetting = function () {
|
|
|
|
var setting = cloneRpcSetting(ariaNgDefaultOptions);
|
|
|
|
setting.rpcId = ariaNgCommonService.generateUniqueId();
|
2017-10-08 16:48:30 +02:00
|
|
|
|
|
|
|
initRpcSettingWithDefaultHostAndProtocol(setting);
|
2017-03-19 16:36:14 +01:00
|
|
|
|
|
|
|
return setting;
|
|
|
|
};
|
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
return {
|
2018-08-11 06:41:55 +02:00
|
|
|
isBrowserSupportStorage: function () {
|
|
|
|
return browserSupportStorage;
|
|
|
|
},
|
|
|
|
getBrowserFeatures: function () {
|
|
|
|
return browserFeatures;
|
|
|
|
},
|
2016-05-16 17:41:39 +02:00
|
|
|
getAllOptions: function () {
|
|
|
|
var options = angular.extend({}, ariaNgDefaultOptions, getOptions());
|
|
|
|
|
2016-06-04 09:33:40 +02:00
|
|
|
if (options.secret) {
|
2018-08-12 10:59:21 +02:00
|
|
|
options.secret = ariaNgCommonService.base64Decode(options.secret);
|
2016-06-04 09:33:40 +02:00
|
|
|
}
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
if (angular.isArray(options.extendRpcServers)) {
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
var rpcSetting = options.extendRpcServers[i];
|
|
|
|
|
|
|
|
if (rpcSetting.secret) {
|
2018-08-12 10:59:21 +02:00
|
|
|
rpcSetting.secret = ariaNgCommonService.base64Decode(rpcSetting.secret);
|
2017-03-19 16:36:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-16 17:41:39 +02:00
|
|
|
return options;
|
2016-05-13 18:09:12 +02:00
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
getAllRpcSettings: function () {
|
|
|
|
var result = [];
|
|
|
|
|
|
|
|
var options = this.getAllOptions();
|
|
|
|
var defaultRpcSetting = cloneRpcSetting(options);
|
|
|
|
defaultRpcSetting.isDefault = true;
|
|
|
|
result.push(defaultRpcSetting);
|
|
|
|
|
|
|
|
if (angular.isArray(options.extendRpcServers)) {
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
var rpcSetting = cloneRpcSetting(options.extendRpcServers[i]);
|
|
|
|
rpcSetting.rpcId = options.extendRpcServers[i].rpcId;
|
|
|
|
rpcSetting.isDefault = false;
|
|
|
|
result.push(rpcSetting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-08-14 15:56:02 +02:00
|
|
|
var displayOrder = this.getRPCListDisplayOrder();
|
|
|
|
|
|
|
|
if (displayOrder === 'recentlyUsed') {
|
|
|
|
// Do Nothing
|
|
|
|
} else if (displayOrder === 'rpcAlias') {
|
|
|
|
result.sort(function (rpc1, rpc2) {
|
2018-09-02 15:29:41 +02:00
|
|
|
return String.naturalCompare(rpc1.rpcAlias, rpc2.rpcAlias);
|
2018-08-14 15:56:02 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
return result;
|
|
|
|
},
|
2018-08-14 22:20:55 +02:00
|
|
|
importAllOptions: function (options) {
|
|
|
|
var finalOptions = angular.copy(ariaNgDefaultOptions);
|
|
|
|
|
|
|
|
for (var key in options) {
|
|
|
|
if (!options.hasOwnProperty(key) || !finalOptions.hasOwnProperty(key)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (angular.isObject(options[key]) || angular.isArray(options[key])) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
finalOptions[key] = options[key];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (angular.isArray(options.extendRpcServers)) {
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
var rpcSetting = options.extendRpcServers[i];
|
|
|
|
var finalRpcSetting = createNewRpcSetting();
|
|
|
|
|
|
|
|
for (var key in rpcSetting) {
|
|
|
|
if (!rpcSetting.hasOwnProperty(key) || !finalRpcSetting.hasOwnProperty(key)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (angular.isObject(rpcSetting[key]) || angular.isArray(rpcSetting[key])) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
finalRpcSetting[key] = rpcSetting[key];
|
|
|
|
}
|
|
|
|
|
|
|
|
finalOptions.extendRpcServers.push(finalRpcSetting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setOptions(finalOptions);
|
|
|
|
},
|
|
|
|
exportAllOptions: function () {
|
|
|
|
var options = angular.extend({}, ariaNgDefaultOptions, getOptions());
|
|
|
|
|
|
|
|
return options;
|
|
|
|
},
|
2016-11-06 15:41:28 +01:00
|
|
|
getAllSessionOptions: function () {
|
|
|
|
return angular.copy(sessionSettings);
|
|
|
|
},
|
2017-10-08 16:48:30 +02:00
|
|
|
isInsecureProtocolDisabled: function () {
|
|
|
|
return isInsecureProtocolDisabled();
|
|
|
|
},
|
2016-05-16 17:41:39 +02:00
|
|
|
getLanguage: function () {
|
|
|
|
return getOption('language');
|
|
|
|
},
|
|
|
|
setLanguage: function (value) {
|
2018-08-12 14:26:26 +02:00
|
|
|
if (!ariaNgLanguages[value]) {
|
|
|
|
return false;
|
2016-05-26 17:52:34 +02:00
|
|
|
}
|
2018-08-12 14:26:26 +02:00
|
|
|
|
|
|
|
setOption('language', value);
|
|
|
|
return true;
|
2016-05-13 18:09:12 +02:00
|
|
|
},
|
2016-11-06 15:41:28 +01:00
|
|
|
isEnableDebugMode: function () {
|
|
|
|
return sessionSettings.debugMode;
|
|
|
|
},
|
|
|
|
setDebugMode: function (value) {
|
|
|
|
sessionSettings.debugMode = value;
|
2018-08-12 10:22:59 +02:00
|
|
|
ariaNgLogService.setEnableDebugLog(value);
|
2016-11-06 15:41:28 +01:00
|
|
|
},
|
2016-06-26 15:31:58 +02:00
|
|
|
getTitle: function () {
|
|
|
|
return getOption('title');
|
|
|
|
},
|
|
|
|
setTitle: function (value) {
|
|
|
|
setOption('title', value);
|
|
|
|
},
|
2018-08-14 16:06:22 +02:00
|
|
|
getBrowserNotification: function () {
|
|
|
|
return getOption('browserNotification');
|
|
|
|
},
|
|
|
|
setBrowserNotification: function (value) {
|
|
|
|
setOption('browserNotification', value);
|
|
|
|
},
|
2016-06-27 17:59:22 +02:00
|
|
|
getTitleRefreshInterval: function () {
|
|
|
|
return getOption('titleRefreshInterval');
|
|
|
|
},
|
|
|
|
setTitleRefreshInterval: function (value) {
|
|
|
|
setOption('titleRefreshInterval', Math.max(parseInt(value), 0));
|
|
|
|
},
|
2018-08-14 16:06:22 +02:00
|
|
|
getGlobalStatRefreshInterval: function () {
|
|
|
|
return getOption('globalStatRefreshInterval');
|
|
|
|
},
|
|
|
|
setGlobalStatRefreshInterval: function (value) {
|
|
|
|
setOption('globalStatRefreshInterval', Math.max(parseInt(value), 0));
|
|
|
|
},
|
|
|
|
getDownloadTaskRefreshInterval: function () {
|
|
|
|
return getOption('downloadTaskRefreshInterval');
|
|
|
|
},
|
|
|
|
setDownloadTaskRefreshInterval: function (value) {
|
|
|
|
setOption('downloadTaskRefreshInterval', Math.max(parseInt(value), 0));
|
|
|
|
},
|
2018-08-14 15:56:02 +02:00
|
|
|
getRPCListDisplayOrder: function () {
|
|
|
|
return getOption('rpcListDisplayOrder');
|
|
|
|
},
|
|
|
|
setRPCListDisplayOrder: function (value) {
|
|
|
|
setOption('rpcListDisplayOrder', value);
|
|
|
|
},
|
2017-05-14 08:16:46 +02:00
|
|
|
getAfterCreatingNewTask: function () {
|
|
|
|
return getOption('afterCreatingNewTask');
|
|
|
|
},
|
|
|
|
setAfterCreatingNewTask: function (value) {
|
|
|
|
setOption('afterCreatingNewTask', value);
|
|
|
|
},
|
2018-11-11 13:53:56 +01:00
|
|
|
getRemoveOldTaskAfterRetrying: function () {
|
|
|
|
return getOption('removeOldTaskAfterRetrying');
|
2017-11-03 17:15:19 +01:00
|
|
|
},
|
2018-11-11 13:53:56 +01:00
|
|
|
setRemoveOldTaskAfterRetrying: function (value) {
|
|
|
|
setOption('removeOldTaskAfterRetrying', value);
|
2017-11-03 17:15:19 +01:00
|
|
|
},
|
2018-11-11 13:53:56 +01:00
|
|
|
getAfterRetryingTask: function () {
|
|
|
|
return getOption('afterRetryingTask');
|
2018-10-21 17:22:05 +02:00
|
|
|
},
|
2018-11-11 13:53:56 +01:00
|
|
|
setAfterRetryingTask: function (value) {
|
|
|
|
setOption('afterRetryingTask', value);
|
2018-10-21 17:22:05 +02:00
|
|
|
},
|
2018-08-11 05:13:55 +02:00
|
|
|
getCurrentRpcDisplayName: function () {
|
|
|
|
var options = getOptions();
|
|
|
|
|
|
|
|
if (options.rpcAlias) {
|
|
|
|
return options.rpcAlias;
|
|
|
|
}
|
|
|
|
|
|
|
|
return options.rpcHost + ':' + options.rpcPort;
|
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
getCurrentRpcUrl: function () {
|
2017-10-08 16:48:30 +02:00
|
|
|
var options = getOptions();
|
|
|
|
var protocol = options.protocol;
|
|
|
|
var rpcHost = options.rpcHost;
|
|
|
|
var rpcPort = options.rpcPort;
|
|
|
|
var rpcInterface = options.rpcInterface;
|
2016-05-13 18:09:12 +02:00
|
|
|
|
2016-12-31 16:02:05 +01:00
|
|
|
return protocol + '://' + rpcHost + ':' + rpcPort + '/' + rpcInterface;
|
2016-05-16 15:28:23 +02:00
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
getCurrentRpcHttpMethod: function () {
|
2016-12-24 15:31:31 +01:00
|
|
|
return getOption('httpMethod');
|
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
isCurrentRpcUseWebSocket: function (protocol) {
|
2016-06-29 17:30:01 +02:00
|
|
|
if (!protocol) {
|
2017-10-08 16:48:30 +02:00
|
|
|
var options = getOptions();
|
|
|
|
protocol = options.protocol;
|
2016-06-29 17:30:01 +02:00
|
|
|
}
|
|
|
|
|
2016-08-01 19:26:10 +02:00
|
|
|
return protocol === 'ws' || protocol === 'wss';
|
2016-06-28 18:18:17 +02:00
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
getCurrentRpcSecret: function () {
|
2016-06-04 09:33:40 +02:00
|
|
|
var value = getOption('secret');
|
2018-08-12 10:59:21 +02:00
|
|
|
return (value ? ariaNgCommonService.base64Decode(value) : value);
|
2016-06-04 09:33:40 +02:00
|
|
|
},
|
2017-03-19 16:36:14 +01:00
|
|
|
addNewRpcSetting: function () {
|
|
|
|
var options = getOptions();
|
|
|
|
|
|
|
|
if (!angular.isArray(options.extendRpcServers)) {
|
|
|
|
options.extendRpcServers = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
var newRpcSetting = createNewRpcSetting();
|
|
|
|
options.extendRpcServers.push(newRpcSetting);
|
|
|
|
|
|
|
|
setOptions(options);
|
|
|
|
|
|
|
|
return newRpcSetting;
|
|
|
|
},
|
|
|
|
updateRpcSetting: function (setting, field) {
|
|
|
|
if (!setting) {
|
|
|
|
return setting;
|
2016-06-04 09:33:40 +02:00
|
|
|
}
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
var updatedSetting = cloneRpcSetting(setting);
|
|
|
|
|
|
|
|
if (angular.isUndefined(updatedSetting[field])) {
|
|
|
|
return setting;
|
|
|
|
}
|
|
|
|
|
|
|
|
var value = updatedSetting[field];
|
|
|
|
|
|
|
|
if (field === 'rpcPort') {
|
|
|
|
value = Math.max(parseInt(value), 0);
|
|
|
|
} else if (field === 'secret') {
|
|
|
|
if (value) {
|
2018-08-12 10:59:21 +02:00
|
|
|
value = ariaNgCommonService.base64Encode(value);
|
2017-03-19 16:36:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (setting.isDefault) {
|
|
|
|
setOption(field, value);
|
|
|
|
|
|
|
|
return setting;
|
|
|
|
} else {
|
|
|
|
var options = getOptions();
|
|
|
|
|
|
|
|
if (!angular.isArray(options.extendRpcServers)) {
|
|
|
|
return setting;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
if (options.extendRpcServers[i].rpcId === setting.rpcId) {
|
|
|
|
options.extendRpcServers[i][field] = value;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setOptions(options);
|
|
|
|
|
|
|
|
return setting;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
removeRpcSetting: function (setting) {
|
|
|
|
var options = getOptions();
|
|
|
|
|
|
|
|
if (!angular.isArray(options.extendRpcServers)) {
|
|
|
|
return setting;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
if (options.extendRpcServers[i].rpcId === setting.rpcId) {
|
|
|
|
options.extendRpcServers.splice(i, 1);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setOptions(options);
|
|
|
|
|
|
|
|
return setting;
|
|
|
|
},
|
2017-03-20 16:35:34 +01:00
|
|
|
setDefaultRpcSetting: function (setting, params) {
|
|
|
|
params = angular.extend({
|
|
|
|
keepCurrent: true,
|
|
|
|
forceSet: false
|
|
|
|
}, params);
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
var options = getOptions();
|
|
|
|
var currentSetting = cloneRpcSetting(options);
|
|
|
|
currentSetting.rpcId = ariaNgCommonService.generateUniqueId();
|
|
|
|
|
|
|
|
if (!angular.isArray(options.extendRpcServers)) {
|
|
|
|
options.extendRpcServers = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
var newDefaultSetting = null;
|
|
|
|
|
|
|
|
for (var i = 0; i < options.extendRpcServers.length; i++) {
|
|
|
|
if (options.extendRpcServers[i].rpcId === setting.rpcId) {
|
|
|
|
newDefaultSetting = cloneRpcSetting(options.extendRpcServers[i]);
|
|
|
|
options.extendRpcServers.splice(i, 1);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-03-20 16:35:34 +01:00
|
|
|
if (params.forceSet) {
|
|
|
|
newDefaultSetting = cloneRpcSetting(setting);
|
|
|
|
|
|
|
|
if (newDefaultSetting.secret) {
|
2018-08-12 10:59:21 +02:00
|
|
|
newDefaultSetting.secret = ariaNgCommonService.base64Encode(newDefaultSetting.secret);
|
2017-03-20 16:35:34 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
if (newDefaultSetting) {
|
2017-03-20 16:35:34 +01:00
|
|
|
if (params.keepCurrent) {
|
|
|
|
options.extendRpcServers.splice(0, 0, currentSetting);
|
|
|
|
}
|
|
|
|
|
2017-03-19 16:36:14 +01:00
|
|
|
options = angular.extend(options, newDefaultSetting);
|
|
|
|
}
|
|
|
|
|
|
|
|
setOptions(options);
|
|
|
|
|
|
|
|
return setting;
|
2016-06-04 09:33:40 +02:00
|
|
|
},
|
2017-03-20 16:35:34 +01:00
|
|
|
isRpcSettingEqualsDefault: function (setting) {
|
|
|
|
if (!setting) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
var options = this.getAllOptions();
|
|
|
|
|
|
|
|
if (options.rpcHost !== setting.rpcHost) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.rpcPort !== setting.rpcPort) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.rpcInterface !== setting.rpcInterface) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.protocol !== setting.protocol) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.httpMethod !== setting.httpMethod) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (options.secret !== setting.secret) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
},
|
2016-05-13 18:09:12 +02:00
|
|
|
getDisplayOrder: function () {
|
|
|
|
var value = getOption('displayOrder');
|
2016-05-16 15:28:23 +02:00
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
if (!value) {
|
2016-05-25 18:09:00 +02:00
|
|
|
value = 'default:asc';
|
2016-05-13 18:09:12 +02:00
|
|
|
}
|
2016-05-16 15:28:23 +02:00
|
|
|
|
2016-05-13 18:09:12 +02:00
|
|
|
return value;
|
|
|
|
},
|
|
|
|
setDisplayOrder: function (value) {
|
|
|
|
setOption('displayOrder', value);
|
2016-05-25 17:33:06 +02:00
|
|
|
},
|
|
|
|
getFileListDisplayOrder: function () {
|
|
|
|
var value = getOption('fileListDisplayOrder');
|
|
|
|
|
|
|
|
if (!value) {
|
2016-05-25 18:09:00 +02:00
|
|
|
value = 'default:asc';
|
2016-05-25 17:33:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return value;
|
|
|
|
},
|
|
|
|
setFileListDisplayOrder: function (value) {
|
|
|
|
setOption('fileListDisplayOrder', value);
|
2016-06-11 16:24:49 +02:00
|
|
|
},
|
|
|
|
getPeerListDisplayOrder: function () {
|
|
|
|
var value = getOption('peerListDisplayOrder');
|
|
|
|
|
|
|
|
if (!value) {
|
|
|
|
value = 'default:asc';
|
|
|
|
}
|
|
|
|
|
|
|
|
return value;
|
|
|
|
},
|
|
|
|
setPeerListDisplayOrder: function (value) {
|
|
|
|
setOption('peerListDisplayOrder', value);
|
2016-07-22 18:17:47 +02:00
|
|
|
},
|
2017-06-18 08:00:14 +02:00
|
|
|
resetSettings: function () {
|
|
|
|
clearAll();
|
|
|
|
},
|
2016-07-22 18:17:47 +02:00
|
|
|
onFirstAccess: function (callback) {
|
|
|
|
if (!callback) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
onFirstVisitCallbacks.push(callback);
|
2016-05-13 18:09:12 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
}]);
|
2016-08-01 16:49:16 +02:00
|
|
|
}());
|