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:
-rw-r--r--src/js/App/Background.js2
-rw-r--r--src/js/Manager/BadgeManager.js42
-rw-r--r--src/js/Manager/RecommendationManager.js37
-rw-r--r--src/js/Manager/TabManager.js4
4 files changed, 59 insertions, 26 deletions
diff --git a/src/js/App/Background.js b/src/js/App/Background.js
index 0f1c741..46829df 100644
--- a/src/js/App/Background.js
+++ b/src/js/App/Background.js
@@ -8,6 +8,7 @@ import ControllerManager from '@js/Manager/ControllerManager';
import RecommendationManager from '@js/Manager/RecommendationManager';
import MessageService from '@js/Services/MessageService';
import TabManager from '@js/Manager/TabManager';
+import BadgeManager from '@js/Manager/BadgeManager';
class Background {
async init() {
@@ -22,6 +23,7 @@ class Background {
SearchManager.init();
TabManager.init();
RecommendationManager.init();
+ BadgeManager.init();
await ServerManager.init();
} catch(e) {
ErrorManager.logError(e);
diff --git a/src/js/Manager/BadgeManager.js b/src/js/Manager/BadgeManager.js
new file mode 100644
index 0000000..7101568
--- /dev/null
+++ b/src/js/Manager/BadgeManager.js
@@ -0,0 +1,42 @@
+import SystemService from '@js/Services/SystemService';
+import RecommendationManager from '@js/Manager/RecommendationManager';
+import TabManager from '@js/Manager/TabManager';
+
+class BadgeManager {
+
+ constructor() {
+ this._api = null;
+ }
+
+ init() {
+ this._api = SystemService.getBrowserApi();
+ RecommendationManager.listen.on(
+ (r) => {
+ this._updateBadge(r);
+ }
+ );
+ }
+
+ /**
+ *
+ * @param {Array} recommended
+ * @private
+ */
+ _updateBadge(recommended) {
+ let tabId = TabManager.currentTabId;
+
+ if(recommended.length !== 0) {
+ this._api.browserAction.setBadgeText({text: recommended.length.toString(), tabId});
+ } else {
+ this._api.browserAction.setBadgeText({text: '', tabId});
+ }
+
+ if(SystemService.getBrowserPlatform() === 'firefox') {
+ this._api.browserAction.setBadgeTextColor({color: '#fff'});
+ }
+
+ this._api.browserAction.setBadgeBackgroundColor({color: '#0082c9'});
+ }
+}
+
+export default new BadgeManager(); \ No newline at end of file
diff --git a/src/js/Manager/RecommendationManager.js b/src/js/Manager/RecommendationManager.js
index cbf5cd8..9ed05bb 100644
--- a/src/js/Manager/RecommendationManager.js
+++ b/src/js/Manager/RecommendationManager.js
@@ -3,16 +3,23 @@ import SearchQuery from '@js/Search/Query/SearchQuery';
import Url from 'url-parse';
import TabManager from '@js/Manager/TabManager';
import SearchIndex from '@js/Search/Index/SearchIndex';
+import EventQueue from '@js/Event/EventQueue';
class RecommendationManager {
+ get listen() {
+ return this._change;
+ }
+
constructor() {
this._api = null;
- this._recommendations = [];
+ this._change = new EventQueue();
this._tabEvent = (tab) => {
if(!tab.hasOwnProperty('recommended') || tab.lastUrl !== tab.url) {
this._updateRecommended(tab);
+ } else {
+ this._change.emit(tab.recommended);
}
};
@@ -55,12 +62,11 @@ class RecommendationManager {
* @private
*/
_updateRecommended(tab) {
- let start = new Date().getTime();
let url = Url(tab.url);
delete tab.recommended;
if(url.host.length === 0) {
- this._updateBadge(tab);
+ this._change.emit([]);
return;
}
@@ -72,6 +78,7 @@ class RecommendationManager {
)
.type('password')
.score(0.4)
+ .limit(8)
.sortBy('favorite')
.sortBy('shared')
.sortBy('score')
@@ -81,29 +88,7 @@ class RecommendationManager {
if(recommendations.length !== 0) {
tab.recommended = recommendations;
}
- this._updateBadge(tab);
-
- let time = new Date().getTime() - start;
- console.log(`Found ${tab.recommended ? tab.recommended.length:0} recommendations for ${url.host} in ${time}ms`, url);
- }
-
- /**
- *
- * @param {Object} tab
- * @private
- */
- _updateBadge(tab) {
- if(tab.hasOwnProperty('recommended')) {
- this._api.browserAction.setBadgeText({text: tab.recommended.length.toString(), tabId: tab.id});
- } else {
- this._api.browserAction.setBadgeText({text: '', tabId: tab.id});
- }
-
- if(SystemService.getBrowserPlatform() === 'firefox') {
- this._api.browserAction.setBadgeTextColor({color: '#fff'});
- }
-
- this._api.browserAction.setBadgeBackgroundColor({color: '#0082c9'});
+ this._change.emit(recommendations);
}
/**
diff --git a/src/js/Manager/TabManager.js b/src/js/Manager/TabManager.js
index 2c27933..58cf141 100644
--- a/src/js/Manager/TabManager.js
+++ b/src/js/Manager/TabManager.js
@@ -12,6 +12,10 @@ class TabManager {
return this._urlChange;
}
+ get currentTabId() {
+ return this._currentTab;
+ }
+
constructor() {
this._api = null;
this._tabs = [];