1+
2+ const countApi = 'https://greasyfork.org/scripts/by-site.json'
3+
14function getCurrentTabUrl ( callback ) {
25 // Query filter to be passed to chrome.tabs.query - see
36 // https://developer.chrome.com/extensions/tabs#method-query
@@ -13,7 +16,7 @@ function getCurrentTabUrl(callback) {
1316 // A window can only have one active tab at a time, so the array consists of
1417 // exactly one tab.
1518 var tab = tabs [ 0 ] ;
16-
19+
1720 // A tab is a plain object that provides information about the tab.
1821 // See https://developer.chrome.com/extensions/tabs#type-Tab
1922 var url = tab . url ;
@@ -37,8 +40,38 @@ function getCurrentTabUrl(callback) {
3740 // alert(url); // Shows "undefined", because chrome.tabs.query is async.
3841 }
3942
40- chrome . tabs . onUpdated . addListener ( function ( ) {
43+ function getUrlHostname ( url ) {
44+ var a = document . createElement ( 'a' ) ;
45+ a . href = url ;
46+ return a . hostname
47+ }
48+
49+ function changeBadge ( data ) {
4150 getCurrentTabUrl ( function ( url ) {
42- alert ( url )
43- } )
51+ let host = getUrlHostname ( url ) . split ( '.' ) . splice ( - 2 ) . join ( '.' )
52+ let count = data [ host ]
53+ count = count > 50 ? 50 : count
54+ chrome . storage . local . set ( { 'host' :host } )
55+ if ( count ) {
56+ chrome . browserAction . setBadgeText ( {
57+ text : count . toString ( )
58+ } )
59+ } else {
60+ chrome . browserAction . setBadgeText ( {
61+ text : ''
62+ } )
63+ }
64+ } )
65+ }
66+
67+ fetch ( countApi ) . then ( ( r ) => {
68+ r . json ( ) . then ( ( data ) => {
69+ alert ( 'data loaded' )
70+ chrome . tabs . onUpdated . addListener ( ( ) => {
71+ changeBadge ( data )
72+ } )
73+ chrome . tabs . onActivated . addListener ( ( ) => {
74+ changeBadge ( data )
75+ } )
76+ } )
4477} )
0 commit comments