@@ -52,84 +52,7 @@ function parseHistory(item, result) {
52522.0 EXTENSION INSTALLED
5353---------------------------------------------------------------*/
5454
55- /*chrome.runtime.onInstalled.addListener(function() {
56- console.time();
57-
58- chrome.history.search({
59- text: '',
60- startTime: 0,
61- maxResults: 999999999
62- }, function(items) {
63- var all = {
64- domains: {},
65- pages: {},
66- params: {}
67- },
68- top = {
69- domains: {},
70- pages: {},
71- params: {}
72- },
73- cache = {
74- domains: [],
75- pages: [],
76- params: []
77- };
78-
79- for (var i = 0, l = items.length; i < l; i++) {
80- parseHistory(items[i], all);
81- }
82-
83- // TODO: IMPROVE ALGORITHM
84- for (var key in all.domains) {
85- cache.domains.push(all.domains[key]);
86- }
87-
88- for (var key in all.pages) {
89- cache.pages.push(all.pages[key]);
90- }
91-
92- for (var key in all.params) {
93- cache.params.push(all.params[key]);
94- }
95-
96- cache.domains = cache.domains.sort(function(a, b) {
97- return b.visitCount - a.visitCount;
98- });
99-
100- cache.pages = cache.pages.sort(function(a, b) {
101- return b.visitCount - a.visitCount;
102- });
103-
104- cache.params = cache.params.sort(function(a, b) {
105- return b.visitCount - a.visitCount;
106- });
107-
108- var keys = [
109- Object.keys(all.domains),
110- Object.keys(all.pages),
111- Object.keys(all.params)
112- ];
113-
114- for (var i = 0; i < 100; i++) {
115- top.domains[keys[0][i]] = all.domains[keys[0][i]];
116- top.pages[keys[1][i]] = all.pages[keys[1][i]];
117- top.params[keys[2][i]] = all.params[keys[2][i]];
118- }
119- // END
120-
121- chrome.storage.local.set({
122- 'all': all,
123- 'top': top
124- }, function() {
125- console.timeEnd();
126- });
127- });
128- });*/
129-
13055chrome . runtime . onInstalled . addListener ( function ( ) {
131- console . time ( ) ;
132-
13356 chrome . history . search ( {
13457 text : '' ,
13558 startTime : 0 ,
@@ -138,12 +61,14 @@ chrome.runtime.onInstalled.addListener(function() {
13861 var storage = {
13962 _all : {
14063 domains : { } ,
141- pages : { }
64+ pages : { } ,
65+ params : { }
14266 } ,
14367 _top : {
14468 domains : { } ,
14569 pages : { } ,
146- length : [ 0 , 0 ]
70+ params : { } ,
71+ length : [ 0 , 0 , 0 ]
14772 }
14873 } ;
14974
@@ -156,7 +81,6 @@ chrome.runtime.onInstalled.addListener(function() {
15681 path = url . match ( / \w ( \/ .* ) / ) [ 1 ] ,
15782 q = url . match ( / [ ? & ] q = [ ^ & ] + / ) || [ ] ;
15883
159-
16084 // DOMAINS
16185 if ( ! storage [ domain ] ) {
16286 storage [ domain ] = { } ;
@@ -167,49 +91,60 @@ chrome.runtime.onInstalled.addListener(function() {
16791 visitCount : visit_count ,
16892 params : q [ 0 ]
16993 } ;
170-
94+
17195 if ( storage . _all . domains [ domain ] ) {
17296 storage . _all . domains [ domain ] += visit_count ;
17397 } else {
17498 storage . _all . domains [ domain ] = visit_count ;
17599 }
176-
177-
100+
178101 // PAGES
179102 storage . _all . pages [ url ] = {
180103 title : title ,
181104 visitCount : visit_count ,
182105 star : 0 ,
183106 tags : ''
184107 } ;
108+
109+ // PARAMS
110+ if ( q && q [ 0 ] && ! storage . _all . params [ domain ] ) {
111+ storage . _all . params [ domain ] = visit_count ;
112+ }
113+
114+ if ( storage . _all . params [ domain ] ) {
115+ storage . _all . params [ domain ] += visit_count ;
116+ }
185117 }
186-
187-
118+
119+
188120 // TOP
189121 var domains = Object . keys ( storage . _all . domains ) . map ( ( key ) => [ key , storage . _all . domains [ key ] ] ) . sort ( function ( a , b ) {
190122 return b [ 1 ] - a [ 1 ] ;
191123 } ) ,
192124 pages = Object . keys ( storage . _all . pages ) . map ( ( key ) => [ key , storage . _all . pages [ key ] ] ) . sort ( function ( a , b ) {
193125 return b [ 1 ] . visitCount - a [ 1 ] . visitCount ;
126+ } ) ,
127+ params = Object . keys ( storage . _all . params ) . map ( ( key ) => [ key , storage . _all . params [ key ] ] ) . sort ( function ( a , b ) {
128+ return b [ 1 ] - a [ 1 ] ;
194129 } ) ;
195-
130+
196131 for ( var i = 0 ; i < Math . min ( 100 , domains . length ) ; i ++ ) {
197132 storage . _top . domains [ domains [ i ] [ 0 ] ] = domains [ i ] [ 1 ] ;
198133 }
199-
134+
200135 for ( var i = 0 ; i < Math . min ( 100 , pages . length ) ; i ++ ) {
201136 storage . _top . pages [ pages [ i ] [ 0 ] ] = pages [ i ] [ 1 ] ;
202137 }
203-
138+
139+ for ( var i = 0 ; i < Math . min ( 100 , params . length ) ; i ++ ) {
140+ storage . _top . params [ params [ i ] [ 0 ] ] = params [ i ] [ 1 ] ;
141+ }
142+
204143 storage . _top . length [ 0 ] = Object . keys ( storage . _all . domains ) . length ;
205144 storage . _top . length [ 1 ] = Object . keys ( storage . _all . pages ) . length ;
206-
145+ storage . _top . length [ 2 ] = Object . keys ( storage . _all . params ) . length ;
207146
208- chrome . storage . local . set ( storage , function ( ) {
209- console . timeEnd ( ) ;
210-
211- console . log ( storage ) ;
212- } ) ;
147+ chrome . storage . local . set ( storage ) ;
213148 } ) ;
214149} ) ;
215150
@@ -219,15 +154,48 @@ chrome.runtime.onInstalled.addListener(function() {
219154---------------------------------------------------------------*/
220155
221156chrome . history . onVisited . addListener ( function ( item ) {
222- chrome . storage . local . get ( 'new' , function ( items ) {
223- var items = items . new || {
224- domains : { } ,
225- pages : { } ,
226- params : { }
227- } ;
157+ chrome . storage . local . get ( '_new' , function ( items ) {
158+ var storage = items . _new || {
159+ domains : { } ,
160+ pages : { } ,
161+ params : { }
162+ } ,
163+ title = item . title ,
164+ url = item . url ,
165+ domain = url . split ( '/' ) [ 2 ] ,
166+ path = url . match ( / \w ( \/ .* ) / ) [ 1 ] ,
167+ q = url . match ( / [ ? & ] q = [ ^ & ] + / ) || [ ] ;
168+
169+ // DOMAINS
170+ if ( storage . domains [ domain ] ) {
171+ storage . domains [ domain ] += 1 ;
172+ } else {
173+ storage . domains [ domain ] = 1 ;
174+ }
175+
176+ // PAGES
177+ if ( storage . pages [ url ] ) {
178+ storage . pages [ url ] . visitCount += 1 ;
179+ } else {
180+ storage . pages [ url ] = {
181+ title : title ,
182+ visitCount : 1 ,
183+ star : 0 ,
184+ tags : ''
185+ } ;
186+ }
187+
188+ // PARAMS
189+ if ( url . indexOf ( / [ ? & ] + q = / ) ) {
190+ if ( storage . params [ domain ] ) {
191+ storage . params [ domain ] += 1 ;
192+ } else {
193+ storage . params [ domain ] = 1 ;
194+ }
195+ }
228196
229197 chrome . storage . local . set ( {
230- 'new' : parseHistory ( item , items )
198+ _new : storage
231199 } ) ;
232200 } ) ;
233201} ) ;
0 commit comments