diff --git a/www/js/services/http-services.js b/www/js/services/http-services.js
index 0d4e08b39085439512c7919e199eb092c77345d0..06ea8d0c8a4dab73284755acd5311a0cf0e91483 100644
--- a/www/js/services/http-services.js
+++ b/www/js/services/http-services.js
@@ -8,7 +8,12 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
var
sockets = [],
defaultCachePrefix = 'csHttp-',
- allCachePrefixes = {};
+ allCachePrefixes = {},
+ regexp = {
+ POSITIVE_INTEGER: /^\d+$/,
+ VERSION_PART_REGEXP: /^[0-9]+|alpha[0-9]+|beta[0-9]+|rc[0-9]+|[0-9]+-SNAPSHOT$/
+ }
+ ;
if (!timeout) {
timeout=4000; // default
@@ -335,6 +340,7 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
uri = 'http://' + path;
}
+ // Use a <a> element to parse
var parser = document.createElement('a');
parser.href = uri;
@@ -389,13 +395,13 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
var parts = parseUri(uri);
if (!parts.protocol && options.type) {
- parts.protocol = (options.type == 'email') ? 'mailto:' :
- ((options.type == 'phone') ? 'tel:' : '');
+ parts.protocol = (options.type === 'email') ? 'mailto:' :
+ ((options.type === 'phone') ? 'tel:' : '');
uri = parts.protocol + uri;
}
// On desktop, open into external tool
- if (parts.protocol == 'mailto:' && Device.isDesktop()) {
+ if (parts.protocol === 'mailto:' && Device.isDesktop()) {
try {
nw.Shell.openExternal(uri);
return;
@@ -405,10 +411,10 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
}
}
- // Check if device is enable, on special tel: or mailto: protocole
- var validProtocol = (parts.protocol == 'mailto:' || parts.protocol == 'tel:') && Device.enable;
+ // Check if device is enable, on special tel: or mailto: protocol
+ var validProtocol = (Device.enable && (parts.protocol === 'mailto:' || parts.protocol === 'tel:'));
if (!validProtocol) {
- if (options.onError && typeof options.onError == 'function') {
+ if (options.onError && typeof options.onError === 'function') {
options.onError(uri);
}
return;
@@ -491,11 +497,15 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
// First, validate both numbers are true version numbers
function validateParts(parts) {
- for (var i = 0; i < parts.length; ++i) {
- if (!isPositiveInteger(parts[i])) {
- return false;
- }
- parts[i] = parseInt(parts[i]);
+ for (var i = 0; i < parts.length; i++) {
+ var isNumber = regexp.POSITIVE_INTEGER.test(parts[i]);
+ // First part MUST be an integer
+ if (i === 0 && !isNumber) return false;
+ // If not integer, should be 'alpha', 'beta', etc.
+ if (!isNumber && !regexp.VERSION_PART_REGEXP.test(parts[i])) return false;
+
+ // Convert string to int (need by compare operators)
+ if (isNumber) parts[i] = parseInt(parts[i]);
}
return true;
}
diff --git a/www/plugins/es/js/controllers/common-controllers.js b/www/plugins/es/js/controllers/common-controllers.js
index e010969c59721dedb3d5caddc56dad9dcea33fb0..a1020d6cadcb1c8cd3da3a88100c1866e0a6ef9b 100644
--- a/www/plugins/es/js/controllers/common-controllers.js
+++ b/www/plugins/es/js/controllers/common-controllers.js
@@ -395,9 +395,8 @@ function ESSocialsEditController($scope, $focus, $filter, UIUtils, SocialUtils)
$focus('socialUrl');
};
-
$scope.reorderSocialNetwork = function(social, fromIndex, toIndex) {
- if (!social || fromIndex == toIndex) return; // no changes
+ if (!social || fromIndex === toIndex) return; // no changes
$scope.formData.socials.splice(fromIndex, 1);
$scope.formData.socials.splice(toIndex, 0, social);
};
@@ -416,7 +415,6 @@ function ESSocialsViewController($scope) {
});
};
-
$scope.filterFn = function(social) {
return !social.recipient || social.valid;
};
@@ -532,17 +530,17 @@ function ESPositionEditController($scope, csConfig, esGeo, ModalUtils) {
});
};
- $scope.onCityChanged = function() {
- if ($scope.loading) return;
- if ($scope.formPosition.enable) {
- if ($scope.formData.geoPoint) {
- // Invalidate the position
- $scope.formData.geoPoint.lat = undefined;
- $scope.formData.geoPoint.lon = undefined;
- }
- return $scope.tryToLocalize();
+ $scope.onCityChanged = function() {
+ if ($scope.loading) return;
+ if ($scope.formPosition.enable) {
+ if ($scope.formData.geoPoint) {
+ // Invalidate the position
+ $scope.formData.geoPoint.lat = undefined;
+ $scope.formData.geoPoint.lon = undefined;
}
- };
+ return $scope.tryToLocalize();
+ }
+ };
$scope.onUseGeopointChanged = function() {
if ($scope.loading) return;
@@ -623,7 +621,7 @@ function ESPositionEditController($scope, csConfig, esGeo, ModalUtils) {
$scope.searchModalOpened = false;
$scope.updateGeoPoint(res);
})
- .catch(function() {
+ .catch(function(err) {
console.error(err);
$scope.searchModalOpened = false;
});
@@ -737,7 +735,6 @@ function ESSearchPositionItemController($scope, $timeout, ModalUtils, csConfig,
// The default country used for address localisation
var defaultCountry = csConfig.plugins && csConfig.plugins.es && csConfig.plugins.es.defaultCountry;
- //$scope.smallscreen = angular.isDefined($scope.smallscreen) ? $scope.smallscreen : UIUtils.screen.isSmall();
var loadingPosition = false;
var minLength = 3;
@@ -800,7 +797,7 @@ function ESSearchPositionItemController($scope, $timeout, ModalUtils, csConfig,
}
_.forEach($scope.locations||[], function(item, index) {
- item.selected = (index == $scope.selectLocationIndex);
+ item.selected = (index === $scope.selectLocationIndex);
});
// TODO: scroll to item ?
@@ -828,7 +825,7 @@ function ESSearchPositionItemController($scope, $timeout, ModalUtils, csConfig,
// Execute the given query
return esGeo.point.searchByAddress(text)
.then(function(res) {
- if ($scope.requestId != requestId) return; // Skip apply if not same request:
+ if ($scope.requestId !== requestId) return; // Skip apply if not same request:
loadingPosition = false;
$scope.locations = res||[];
diff --git a/www/plugins/es/js/controllers/like-controllers.js b/www/plugins/es/js/controllers/like-controllers.js
index b67a1f358bb8c8c88df5eb13d83aaacafe841ea7..f2ff5154b3bb1fbb101abde60cdf8dd0575f683a 100644
--- a/www/plugins/es/js/controllers/like-controllers.js
+++ b/www/plugins/es/js/controllers/like-controllers.js
@@ -297,7 +297,6 @@ function ESLikesController($scope, $q, $timeout, $translate, $ionicPopup, UIUtil
options.kind = 'ABUSE';
return $scope.toggleLike(event, options)
.then(function() {
- console.log('BEFORE display toast');
UIUtils.toast.show('COMMON.REPORT_ABUSE.CONFIRM.SENT');
});
};
diff --git a/www/plugins/es/js/controllers/profile-controllers.js b/www/plugins/es/js/controllers/profile-controllers.js
index c2d4f92013db2a71951199e6793edec4ed0f18ed..3eacd820f8441327d04ce7438f6d09eeb01618a1 100644
--- a/www/plugins/es/js/controllers/profile-controllers.js
+++ b/www/plugins/es/js/controllers/profile-controllers.js
@@ -79,7 +79,7 @@ function ESViewEditProfileController($scope, $q, $timeout, $state, $focus, $tran
})
.then($scope.load)
.catch(function(err){
- if (err == 'CANCELLED') {
+ if (err === 'CANCELLED') {
UIUtils.loading.hide(10);
$scope.cancel();
return;
@@ -191,6 +191,7 @@ function ESViewEditProfileController($scope, $q, $timeout, $state, $focus, $tran
}
if (!hasWaitDebounce) {
+ console.debug('[ES] [profile] Waiting debounce end, before saving...');
$scope.saving = true;
return $timeout(function() {
return $scope.save(silent, true);
diff --git a/www/plugins/es/templates/common/edit_socials.html b/www/plugins/es/templates/common/edit_socials.html
index 128e17f6aabed4a626d97d1634272b02e9c08f11..bed22c7da2143a2b41f1c87d8915f45a99b9efb7 100644
--- a/www/plugins/es/templates/common/edit_socials.html
+++ b/www/plugins/es/templates/common/edit_socials.html
@@ -21,7 +21,7 @@
ng-repeat="social in formData.socials | filter:filterFn track by social.url"
id="social-{{social.url|formatSlug}}">
<i class="icon ion-social-{{social.type}}"
- ng-class="{'ion-bookmark': social.type == 'other', 'ion-link': social.type == 'web', 'ion-email': social.type == 'email', 'ion-iphone': social.type == 'phone'}"></i>
+ ng-class="{'ion-bookmark': social.type === 'other', 'ion-link': social.type === 'web', 'ion-email': social.type === 'email', 'ion-iphone': social.type === 'phone'}"></i>
<p ng-if="social.type && social.type != 'web'">
{{social.type}}
<i class="ion-locked" ng-if="social.recipient"></i>