From 3331d187b6866f6114856a322e7f58eab7062d28 Mon Sep 17 00:00:00 2001 From: Mario Basic Date: Sat, 13 Jun 2015 19:27:35 +0200 Subject: [PATCH] Added config for extension, updated a lot of things to use config. Updated icons. --- assets/js/WakaTime.js | 31 +- assets/js/components/MainList.react.js | 2 +- assets/js/components/WakaTime.react.js | 41 +- assets/js/config.js | 25 ++ assets/js/helpers/changeExtensionIcon.js | 8 +- assets/js/options.js | 6 +- graphics/wakatime-logo-38-gray.png | Bin 0 -> 2039 bytes graphics/wakatime-logo-38-red.png | Bin 0 -> 2146 bytes public/js/bundle.js | 486 ++++++++++++----------- public/js/events.js | 104 +++-- public/js/options.js | 67 +++- 11 files changed, 433 insertions(+), 337 deletions(-) create mode 100644 assets/js/config.js create mode 100644 graphics/wakatime-logo-38-gray.png create mode 100644 graphics/wakatime-logo-38-red.png diff --git a/assets/js/WakaTime.js b/assets/js/WakaTime.js index 80245dc..444283a 100644 --- a/assets/js/WakaTime.js +++ b/assets/js/WakaTime.js @@ -3,20 +3,11 @@ import $ from 'jquery'; import currentTimestamp from './helpers/currentTimestamp.js'; import changeExtensionIcon from './helpers/changeExtensionIcon.js'; var in_array = require('./helpers/in_array'); +var config = require('./config.js'); class WakaTime { - tabsWithDevtoolsOpen = []; - constructor(props) { - this.detectionIntervalInSeconds = 60; //default - - this.loggingType = 'domain'; //default - - this.heartbeatApiUrl = 'https://wakatime.com/api/v1/users/current/heartbeats'; - - this.currentUserApiUrl = 'https://wakatime.com/api/v1/users/current'; - this.tabsWithDevtoolsOpen = []; } @@ -33,7 +24,7 @@ class WakaTime { var deferredObject = $.Deferred(); $.ajax({ - url: this.currentUserApiUrl, + url: config.currentUserApiUrl, dataType: 'json', success: (data) => { @@ -42,7 +33,7 @@ class WakaTime { }, error: (xhr, status, err) => { - console.error(this.currentUserApiUrl, status, err.toString()); + console.error(config.currentUserApiUrl, status, err.toString()); deferredObject.resolve(false); } @@ -61,12 +52,12 @@ class WakaTime { if (data !== false) { chrome.storage.sync.get({ - loggingEnabled: true + loggingEnabled: config.loggingEnabled }, (items) => { if (items.loggingEnabled === true) { - changeExtensionIcon(); + changeExtensionIcon(config.colors.allGood); - chrome.idle.queryState(this.detectionIntervalInSeconds, (newState) => { + chrome.idle.queryState(config.detectionIntervalInSeconds, (newState) => { if (newState === 'active') { // Get current tab URL. @@ -81,7 +72,7 @@ class WakaTime { }); } else { - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notLogging); } }); } @@ -89,7 +80,7 @@ class WakaTime { // User is not logged in. // Change extension icon to red color. - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notSignedIn); } }); } @@ -123,7 +114,7 @@ class WakaTime { var deferredObject = $.Deferred(); chrome.storage.sync.get({ - loggingType: this.loggingType + loggingType: config.loggingType }, function (items) { deferredObject.resolve(items.loggingType); }); @@ -181,7 +172,7 @@ class WakaTime { var deferredObject = $.Deferred(); $.ajax({ - url: this.heartbeatApiUrl, + url: config.heartbeatApiUrl, dataType: 'json', contentType: 'application/json', method: method, @@ -193,7 +184,7 @@ class WakaTime { }, error: (xhr, status, err) => { - console.error(this.heartbeatApiUrl, status, err.toString()); + console.error(config.heartbeatApiUrl, status, err.toString()); deferredObject.resolve(this); diff --git a/assets/js/components/MainList.react.js b/assets/js/components/MainList.react.js index 4a8a3fe..8f9322c 100644 --- a/assets/js/components/MainList.react.js +++ b/assets/js/components/MainList.react.js @@ -62,7 +62,7 @@ class MainList extends React.Component { ); } - else + else if(this.props.loggingEnabled === false && this.props.loggedIn === true) { return (
diff --git a/assets/js/components/WakaTime.react.js b/assets/js/components/WakaTime.react.js index bf38689..5a1243f 100644 --- a/assets/js/components/WakaTime.react.js +++ b/assets/js/components/WakaTime.react.js @@ -6,22 +6,19 @@ import NavBar from './NavBar.react.js'; import MainList from './MainList.react.js'; import changeExtensionIcon from '../helpers/changeExtensionIcon.js'; import WakaTimeOriginal from '../WakaTime.js'; +var config = require('../config.js'); class WakaTime extends React.Component { - constructor(props) { - super(props); - this.logoutUserUrl = 'https://wakatime.com/logout'; - this.state = { - user: { - full_name: null, - email: null, - photo: null - }, - loggedIn: false, - loggingEnabled: false - }; - } + state = { + user: { + full_name: null, + email: null, + photo: null + }, + loggedIn: false, + loggingEnabled: config.loggingEnabled + }; componentDidMount() { @@ -32,14 +29,14 @@ class WakaTime extends React.Component { if (data !== false) { chrome.storage.sync.get({ - loggingEnabled: false + loggingEnabled: config.loggingEnabled }, (items) => { this.setState({loggingEnabled: items.loggingEnabled}); if (items.loggingEnabled === true) { - changeExtensionIcon(); + changeExtensionIcon(config.colors.allGood); } else { - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notLogging); } }); @@ -53,7 +50,7 @@ class WakaTime extends React.Component { }); } else { - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notSignedIn); } }); @@ -63,7 +60,7 @@ class WakaTime extends React.Component { var deferredObject = $.Deferred(); $.ajax({ - url: this.logoutUserUrl, + url: config.logoutUserUrl, method: 'GET', success: () => { @@ -72,7 +69,7 @@ class WakaTime extends React.Component { }, error: (xhr, status, err) => { - console.error(this.logoutUserUrl, status, err.toString()); + console.error(config.logoutUserUrl, status, err.toString()); deferredObject.resolve(this); } @@ -94,7 +91,7 @@ class WakaTime extends React.Component { loggingEnabled: false }); - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notSignedIn); }); } @@ -104,7 +101,7 @@ class WakaTime extends React.Component { loggingEnabled: false }); - changeExtensionIcon('red'); + changeExtensionIcon(config.colors.notLogging); chrome.storage.sync.set({ loggingEnabled: false @@ -116,7 +113,7 @@ class WakaTime extends React.Component { loggingEnabled: true }); - changeExtensionIcon(); + changeExtensionIcon(config.colors.allGood); chrome.storage.sync.set({ loggingEnabled: true diff --git a/assets/js/config.js b/assets/js/config.js new file mode 100644 index 0000000..543e68f --- /dev/null +++ b/assets/js/config.js @@ -0,0 +1,25 @@ +export default { + // Time for idle state of the browser + // The user is considered idle if there was + // no activity in the browser for x seconds + detectionIntervalInSeconds: 60, + //default logging type + loggingType: 'domain', + // By default logging is enabled + loggingEnabled: true, + // Url to which to send the heartbeat + heartbeatApiUrl: 'https://wakatime.com/api/v1/users/current/heartbeats', + // Url from which to detect if the user is logged in + currentUserApiUrl: 'https://wakatime.com/api/v1/users/current', + // The url to logout the user from wakatime + logoutUserUrl: 'https://wakatime.com/logout', + // Different colors for different states of the extension + colors: { + allGood: '', + notLogging: 'gray', + notSignedIn: 'red', + lightTheme: 'white' + }, + // Default theme + theme: 'light' +}; \ No newline at end of file diff --git a/assets/js/helpers/changeExtensionIcon.js b/assets/js/helpers/changeExtensionIcon.js index e94c965..3babfd4 100644 --- a/assets/js/helpers/changeExtensionIcon.js +++ b/assets/js/helpers/changeExtensionIcon.js @@ -1,6 +1,6 @@ /** * It changes the extension icon color. - * Supported values are: 'red', 'white' and ''. + * Supported values are: 'red', 'white', 'gray' and ''. */ export default function changeExtensionIcon(color = '') { @@ -9,7 +9,7 @@ export default function changeExtensionIcon(color = '') { if (color !== '') { color = '-' + color; - path = './graphics/wakatime-logo-48' + color + '.png'; + path = './graphics/wakatime-logo-38' + color + '.png'; chrome.browserAction.setIcon({ path: path @@ -21,14 +21,14 @@ export default function changeExtensionIcon(color = '') { theme: 'light' }, function (items) { if (items.theme == 'light') { - path = './graphics/wakatime-logo-48.png'; + path = './graphics/wakatime-logo-38.png'; chrome.browserAction.setIcon({ path: path }); } else { - path = './graphics/wakatime-logo-48-white.png'; + path = './graphics/wakatime-logo-38-white.png'; chrome.browserAction.setIcon({ path: path diff --git a/assets/js/options.js b/assets/js/options.js index 43a68f0..2570890 100644 --- a/assets/js/options.js +++ b/assets/js/options.js @@ -2,6 +2,8 @@ global.jQuery = require('jquery'); require('bootstrap'); +var config = require('./config'); + import $ from "jquery"; function detectCheckedRadio(name) { @@ -47,9 +49,9 @@ function save_options(e) { function restore_options() { // Use default value color = 'red' and likesColor = true. chrome.storage.sync.get({ - theme: 'light', + theme: config.theme, blacklist: '', - loggingType: 'domain' + loggingType: config.loggingType }, function (items) { document.getElementById('theme').value = items.theme; document.getElementById('blacklist').value = items.blacklist; diff --git a/graphics/wakatime-logo-38-gray.png b/graphics/wakatime-logo-38-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..06678c906633012e025ee3730cc7fffed115d1c9 GIT binary patch literal 2039 zcmaJ?c~nzZ8V`#I2q=mO42+MUEY|D{uu?pk36qj+uDvm|4ECmb5)V@%#^M{>x&VBdZ@BDt>_xqM}?w+`q z2wQ6xYXkye%VILv@a}0`mKN||LmAe>n==%a1jS2JAthH1BB%l>4+L0ZZW_o2xq{rR zJ}?M@F!K~~lAxsMC^BCvMstlAv`Q?4*$6~Xh)TxgXMhmE1Jgtj3UaLb5)u#zD9A)& zG&WjB2ZbVLo*azNi{bF|GWa9`G9(xXQjuW?Vi4j2DsiSnK~_<5$BGKO;zZt+|alRNV4ud10a3r#?FByvk7C$5$ zO)f|!vl-!wvEUm8DTE*y8G}(Om1rdaEtRKXa3m55gT-U;cod94DRLzcSA~)&JeE8# zKm}hel0hP=1TcE!@}$`i1qmztJq58WI{Lk1iDI!(aLF(#t_*`iV=-c}F|P%*0%C)I z$oL>y!O4|@7&fSoX3P0-KT(ty|kKKb*kga4j}=cAK=7DQRgZ)-%fc1lG?I zLkfQ=E-ubWoH}}GwY`1I%*@PuM_{>)jg7ZXr|TaYYS-5G_xC52Q$np*E&IaU^n9+v zjOmm~torTj?5y8o`^h&6nSM>Hot;VbNd*O$R=c@%M8(EtXQqsY)$w;`)l^P2E$8()^4 zfy#5-*uDDYg*KG|vz5@<&X`{kH#&^&7MkAG_?|P3P^(gQ7k7l(kJFB=A5P~zeo#T3 z(ls8udEB^T0=;nkg+JTzg^7=38T42KVZtSoUV$k~19_ zyMjxv2fCjbs*%^%F-{jpF;8{=`?&V!b*yQ>!?f77pJ2zJ%Mo z!@ii%+fcva(Iz$XZ|iowS;uH2JnS@db#=|F=n2K5%zF)ve;KkjYs;=p+~$7utj1iZ zW8lhiJsiK4)t%CNt<8VlGrg_k2bEX5cW8YLM$IYd_Zm}+P;ZgCQ2nQxg6EGu-ZAN* zQ#5WvRRQ)^7DY28n`eGE=@XH=-&($FZ<`@3e|+(KLtI6~SNMbUD zZrc5M?(8AJj-lz6)T~;rC}~Q(wnqBS(Q&ttO>qtJsW2Ny4IPSmZ{?{=8mzZgD0AS zh+Pj-B1@`1HA(i493Qf>+{HvsT3D{xQ4dTW8Q44jiz;7M7Z41ox?HQ7(K_+;)vAFg zf3G5*Pw)D^>OF;DE4 zJKfsg={o4$lHAHu7FOllC_L9Q+?4C#`TAr}Ywwmh_Jhv#?XNC>WZG*eHXF0u*Lkb~ zxlg`f<;}+XHyqHRuWEKGTk?1AcQo^19zQv7f85Nr8tK-D_j&xh>28VjAaQ8^pOI_t ze|1h3@?vCUWXi>wTJ7N9oo^d9@M6?uZ@{(W13&F}ltqrR3)#P+_1(40+j+d!H1tou g4u0dZxxm~B@wES6m-gIkh%r9Jtgsk{mX=cV8}%1A@Bjb+ literal 0 HcmV?d00001 diff --git a/graphics/wakatime-logo-38-red.png b/graphics/wakatime-logo-38-red.png new file mode 100644 index 0000000000000000000000000000000000000000..3918b737d9b948b30ec1ad474ced722ad485845b GIT binary patch literal 2146 zcmaJ?c~nzZ8V|^!$WrZ;f-oYF2mx)#{)B`?4GDpuK^np$%1B5aBw`kmr-`6-LAEH0 zAZn>7SXq?KpimW*IWwprixxcWQblD^p`t8~#Bp9M*#6=4opay4_dCDe_x--*oSPmT zvkj(-1i-1EEv9Ly{f>2DcA_fAuGGQFVhlJu? z+nXRd3bgF*vPEiLg;9`WmfLD2j(*AO?z)${Fb2YU|N}RLnq! zgFFIH$$})(fCLp3k`N>iCB%!UV)UBT09{K%9LOM82xw*71hMbLNJR0~2 zf#VtI-$h06f&rF71py!q^b`?DM8J!RBZ8op7YPfH2t*2=K*STtoF+7Xlsw)i$8z;tp^%c{wL&GHh$G--GGksJ(Q23v z{UPJCXtiLM62kK#wPJ@#g!ChJ`8*k^-CqYX0uePdwnDT+2FYPAn}J3wII&br^W~5^ zEVdVwNc3YO3uKZxWIuv8hskD931q78JeMn1!$P?Tn&(RY;ClZhm&Q^-LRg^^C=}b~ zyB91`zzVfQp#)g0kKF=1!liPtLZe<`Ebp9JNG06~i8(5T4ER_dn)EXo*i2v2Dv;$( zAp071fZk+ZkP4E?O!g{@H^>Chb6oLfa-ZWOdHx?R9ub2#Huq1>o;M*AWITQvUF7m< z_#rtm@hW7rS0B>8LZQssxooCD+xzm=MoDP6ZOXkH*U~Y$osV4xAFSoZq&3jKxwt5N za9`wNY=$j1Y>Q5S_7vE>i!QuU?Wi>SMqpbe$^zA9-1;F8c9&<`-UuGWGQ8xbnS~H>P`8Wu>Lf4ry-V*7viN&b@toc|$|7#rDgV zT66Xly!-DWiHYn7kMvtHK|*0cc3xgy(E5O!lP7(goSX^*Z=N=As5-m$bk|C^XxGM$ zp*xQ>N~_Igaa~*Lk6BIyqaUB=uP81l8Ci3#A~iQR_jG$ZzxeXyj+tT4j^bAT-KMcD zZ1Z%*WTYK*+-K?Gf zZvv{)hI!Fh6Rp5685wqy2HPHyfnc}&LDKOhB^E$VSm);Q-v;|SwDB0TnT@UIW=nc? zFZFr(|GYSBu{<#$8|%`oi&(gjyZl8)k!kf*P|2OQyKpi3u?quPBrDn~;LA;4i}bzL zPItGycwhCUaBt2^WfwZ!Dd6zo)n6T>kWC}}H_TpXe{w8*?ahQSMFU53Vk`H15PIDJ z9QABJICA3bcks2N=TlrN_Lp;}xR`%OdFAZG=H0m2kkvW6-C4BJLFt3it&f7IR}8|L zV^^!!dFWI0ZSfI{S3JFFF%VfwmV@H9L|4h>;~uHY8aN*PuPqGEg_XRMXC5v&EnA-A}&5XQu;-5qmm#v>%aWSe)Fa+tNS6I zOl`l%VrXUR{c2LttGoVH61+)eQdD42%KPJ4*@f$$ul!F981jCVJ}hdu|MkkoMFA(m z7dt0GkLqv(YRb-7F5_2FX~>oTC*7DOr_G{rwaFunxTR>x*R%JxOe<52+nJDnevk;ppJC-f7Hj=}=MY zX4O}WmN7hM#4))$8teaXfZw;j_E2kQqC@w9^ZD*yZtpl?durI^5*6-awVY<{jtkuz zu%UkBr($t|9p9>~C}f-KJwL|bvd%q;y#YTN^2hB+ZeWo8*rKwc)XZ{S-SD0G`q8R4 zEn6c^DhRI4=Nj^0(*Sojhk6;P!OOOm4p&8=X=uKCx4pt*GHnNY1Gw{Axqt1tM@Mk) zwnwG8?Ft(?yli-)a$Dj+>I3c@U4B8q<6B&M<|*?sEID((=ojzM0K+(n6#PM6+C3}%