Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/Manager/RecommendationManager.js')
-rw-r--r--src/js/Manager/RecommendationManager.js40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/js/Manager/RecommendationManager.js b/src/js/Manager/RecommendationManager.js
index 3b9af73..cda001c 100644
--- a/src/js/Manager/RecommendationManager.js
+++ b/src/js/Manager/RecommendationManager.js
@@ -3,6 +3,7 @@ import Url from 'url-parse';
import TabManager from '@js/Manager/TabManager';
import SearchIndex from '@js/Search/Index/SearchIndex';
import EventQueue from '@js/Event/EventQueue';
+import SettingsService from '@js/Services/SettingsService';
class RecommendationManager {
@@ -34,6 +35,17 @@ class RecommendationManager {
TabManager.tabChanged.on(this._tabEvent);
TabManager.urlChanged.on(this._tabEvent);
SearchIndex.listen.on(this._searchEvent);
+ this.initRecommendationOptions();
+ }
+
+ initRecommendationOptions() {
+ this.options = { searchQuery: "Host", maxResults: 8 }
+ SettingsService.getValue('search.recommendation.option')
+ .then((value) => {
+ if(value) {
+ this.options.searchQuery = value;
+ }
+ });
}
/**
@@ -66,8 +78,18 @@ class RecommendationManager {
let query = new SearchQuery('or');
query
.where(
- query.field('host').equals(url.host),
- query.field('url').contains(url.pathname.length > 1 ? url.host + url.pathname:url.host)
+ // search by domain
+ (this.options.searchQuery === "domain" ? query.field('host').contains(this.getSearchDomainFromHost(url.host)):
+ // search by hostname
+ (this.options.searchQuery === "host" ? query.field('host').startsWith(url.host.split(':')[0]):
+ // search by hostname and port
+ (this.options.searchQuery === "hostport" ? query.field('host').equals(url.host):
+ // search exact
+ (this.options.searchQuery === "exact" ? query.field('url').equals(url.protocol + "//" + url.host + (url.pathname.length > 1 ? url.pathname: "")):
+ "")
+ )
+ )
+ )
)
.type('password')
.score(0.3)
@@ -84,6 +106,20 @@ class RecommendationManager {
}
/**
+ * @param {String} host
+ */
+ getSearchDomainFromHost(host) {
+ var regIPAdress = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/;
+ if (regIPAdress.test(host)) {
+ return host;
+ }
+ else {
+ var domain = host.split(':')[0];
+ return domain.split('.').reverse()[1] + "." + domain.split('.').reverse()[0];
+ }
+ }
+
+ /**
*
* @param {Object} tab
* @private