Added config for extension, updated a lot of things to use config. Updated icons.
This commit is contained in:
@@ -3,20 +3,11 @@ import $ from 'jquery';
|
|||||||
import currentTimestamp from './helpers/currentTimestamp.js';
|
import currentTimestamp from './helpers/currentTimestamp.js';
|
||||||
import changeExtensionIcon from './helpers/changeExtensionIcon.js';
|
import changeExtensionIcon from './helpers/changeExtensionIcon.js';
|
||||||
var in_array = require('./helpers/in_array');
|
var in_array = require('./helpers/in_array');
|
||||||
|
var config = require('./config.js');
|
||||||
|
|
||||||
class WakaTime {
|
class WakaTime {
|
||||||
|
|
||||||
tabsWithDevtoolsOpen = [];
|
|
||||||
|
|
||||||
constructor(props) {
|
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 = [];
|
this.tabsWithDevtoolsOpen = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,7 +24,7 @@ class WakaTime {
|
|||||||
var deferredObject = $.Deferred();
|
var deferredObject = $.Deferred();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: this.currentUserApiUrl,
|
url: config.currentUserApiUrl,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: (data) => {
|
success: (data) => {
|
||||||
|
|
||||||
@@ -42,7 +33,7 @@ class WakaTime {
|
|||||||
},
|
},
|
||||||
error: (xhr, status, err) => {
|
error: (xhr, status, err) => {
|
||||||
|
|
||||||
console.error(this.currentUserApiUrl, status, err.toString());
|
console.error(config.currentUserApiUrl, status, err.toString());
|
||||||
|
|
||||||
deferredObject.resolve(false);
|
deferredObject.resolve(false);
|
||||||
}
|
}
|
||||||
@@ -61,12 +52,12 @@ class WakaTime {
|
|||||||
if (data !== false) {
|
if (data !== false) {
|
||||||
|
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
loggingEnabled: true
|
loggingEnabled: config.loggingEnabled
|
||||||
}, (items) => {
|
}, (items) => {
|
||||||
if (items.loggingEnabled === true) {
|
if (items.loggingEnabled === true) {
|
||||||
changeExtensionIcon();
|
changeExtensionIcon(config.colors.allGood);
|
||||||
|
|
||||||
chrome.idle.queryState(this.detectionIntervalInSeconds, (newState) => {
|
chrome.idle.queryState(config.detectionIntervalInSeconds, (newState) => {
|
||||||
|
|
||||||
if (newState === 'active') {
|
if (newState === 'active') {
|
||||||
// Get current tab URL.
|
// Get current tab URL.
|
||||||
@@ -81,7 +72,7 @@ class WakaTime {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notLogging);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -89,7 +80,7 @@ class WakaTime {
|
|||||||
|
|
||||||
// User is not logged in.
|
// User is not logged in.
|
||||||
// Change extension icon to red color.
|
// Change extension icon to red color.
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notSignedIn);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -123,7 +114,7 @@ class WakaTime {
|
|||||||
var deferredObject = $.Deferred();
|
var deferredObject = $.Deferred();
|
||||||
|
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
loggingType: this.loggingType
|
loggingType: config.loggingType
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
deferredObject.resolve(items.loggingType);
|
deferredObject.resolve(items.loggingType);
|
||||||
});
|
});
|
||||||
@@ -181,7 +172,7 @@ class WakaTime {
|
|||||||
var deferredObject = $.Deferred();
|
var deferredObject = $.Deferred();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: this.heartbeatApiUrl,
|
url: config.heartbeatApiUrl,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
method: method,
|
method: method,
|
||||||
@@ -193,7 +184,7 @@ class WakaTime {
|
|||||||
},
|
},
|
||||||
error: (xhr, status, err) => {
|
error: (xhr, status, err) => {
|
||||||
|
|
||||||
console.error(this.heartbeatApiUrl, status, err.toString());
|
console.error(config.heartbeatApiUrl, status, err.toString());
|
||||||
|
|
||||||
deferredObject.resolve(this);
|
deferredObject.resolve(this);
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class MainList extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
else if(this.props.loggingEnabled === false && this.props.loggedIn === true)
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
<div className="panel panel-default">
|
<div className="panel panel-default">
|
||||||
|
|||||||
@@ -6,22 +6,19 @@ import NavBar from './NavBar.react.js';
|
|||||||
import MainList from './MainList.react.js';
|
import MainList from './MainList.react.js';
|
||||||
import changeExtensionIcon from '../helpers/changeExtensionIcon.js';
|
import changeExtensionIcon from '../helpers/changeExtensionIcon.js';
|
||||||
import WakaTimeOriginal from '../WakaTime.js';
|
import WakaTimeOriginal from '../WakaTime.js';
|
||||||
|
var config = require('../config.js');
|
||||||
|
|
||||||
class WakaTime extends React.Component {
|
class WakaTime extends React.Component {
|
||||||
|
|
||||||
constructor(props) {
|
state = {
|
||||||
super(props);
|
user: {
|
||||||
this.logoutUserUrl = 'https://wakatime.com/logout';
|
full_name: null,
|
||||||
this.state = {
|
email: null,
|
||||||
user: {
|
photo: null
|
||||||
full_name: null,
|
},
|
||||||
email: null,
|
loggedIn: false,
|
||||||
photo: null
|
loggingEnabled: config.loggingEnabled
|
||||||
},
|
};
|
||||||
loggedIn: false,
|
|
||||||
loggingEnabled: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
|
|
||||||
@@ -32,14 +29,14 @@ class WakaTime extends React.Component {
|
|||||||
if (data !== false) {
|
if (data !== false) {
|
||||||
|
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
loggingEnabled: false
|
loggingEnabled: config.loggingEnabled
|
||||||
}, (items) => {
|
}, (items) => {
|
||||||
this.setState({loggingEnabled: items.loggingEnabled});
|
this.setState({loggingEnabled: items.loggingEnabled});
|
||||||
if (items.loggingEnabled === true) {
|
if (items.loggingEnabled === true) {
|
||||||
changeExtensionIcon();
|
changeExtensionIcon(config.colors.allGood);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notLogging);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -53,7 +50,7 @@ class WakaTime extends React.Component {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notSignedIn);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -63,7 +60,7 @@ class WakaTime extends React.Component {
|
|||||||
var deferredObject = $.Deferred();
|
var deferredObject = $.Deferred();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: this.logoutUserUrl,
|
url: config.logoutUserUrl,
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
success: () => {
|
success: () => {
|
||||||
|
|
||||||
@@ -72,7 +69,7 @@ class WakaTime extends React.Component {
|
|||||||
},
|
},
|
||||||
error: (xhr, status, err) => {
|
error: (xhr, status, err) => {
|
||||||
|
|
||||||
console.error(this.logoutUserUrl, status, err.toString());
|
console.error(config.logoutUserUrl, status, err.toString());
|
||||||
|
|
||||||
deferredObject.resolve(this);
|
deferredObject.resolve(this);
|
||||||
}
|
}
|
||||||
@@ -94,7 +91,7 @@ class WakaTime extends React.Component {
|
|||||||
loggingEnabled: false
|
loggingEnabled: false
|
||||||
});
|
});
|
||||||
|
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notSignedIn);
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -104,7 +101,7 @@ class WakaTime extends React.Component {
|
|||||||
loggingEnabled: false
|
loggingEnabled: false
|
||||||
});
|
});
|
||||||
|
|
||||||
changeExtensionIcon('red');
|
changeExtensionIcon(config.colors.notLogging);
|
||||||
|
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
loggingEnabled: false
|
loggingEnabled: false
|
||||||
@@ -116,7 +113,7 @@ class WakaTime extends React.Component {
|
|||||||
loggingEnabled: true
|
loggingEnabled: true
|
||||||
});
|
});
|
||||||
|
|
||||||
changeExtensionIcon();
|
changeExtensionIcon(config.colors.allGood);
|
||||||
|
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
loggingEnabled: true
|
loggingEnabled: true
|
||||||
|
|||||||
25
assets/js/config.js
Normal file
25
assets/js/config.js
Normal file
@@ -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'
|
||||||
|
};
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* It changes the extension icon color.
|
* It changes the extension icon color.
|
||||||
* Supported values are: 'red', 'white' and ''.
|
* Supported values are: 'red', 'white', 'gray' and ''.
|
||||||
*/
|
*/
|
||||||
export default function changeExtensionIcon(color = '') {
|
export default function changeExtensionIcon(color = '') {
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ export default function changeExtensionIcon(color = '') {
|
|||||||
if (color !== '') {
|
if (color !== '') {
|
||||||
color = '-' + color;
|
color = '-' + color;
|
||||||
|
|
||||||
path = './graphics/wakatime-logo-48' + color + '.png';
|
path = './graphics/wakatime-logo-38' + color + '.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
@@ -21,14 +21,14 @@ export default function changeExtensionIcon(color = '') {
|
|||||||
theme: 'light'
|
theme: 'light'
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
if (items.theme == 'light') {
|
if (items.theme == 'light') {
|
||||||
path = './graphics/wakatime-logo-48.png';
|
path = './graphics/wakatime-logo-38.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
path = './graphics/wakatime-logo-48-white.png';
|
path = './graphics/wakatime-logo-38-white.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
global.jQuery = require('jquery');
|
global.jQuery = require('jquery');
|
||||||
require('bootstrap');
|
require('bootstrap');
|
||||||
|
|
||||||
|
var config = require('./config');
|
||||||
|
|
||||||
import $ from "jquery";
|
import $ from "jquery";
|
||||||
|
|
||||||
function detectCheckedRadio(name) {
|
function detectCheckedRadio(name) {
|
||||||
@@ -47,9 +49,9 @@ function save_options(e) {
|
|||||||
function restore_options() {
|
function restore_options() {
|
||||||
// Use default value color = 'red' and likesColor = true.
|
// Use default value color = 'red' and likesColor = true.
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
theme: 'light',
|
theme: config.theme,
|
||||||
blacklist: '',
|
blacklist: '',
|
||||||
loggingType: 'domain'
|
loggingType: config.loggingType
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
document.getElementById('theme').value = items.theme;
|
document.getElementById('theme').value = items.theme;
|
||||||
document.getElementById('blacklist').value = items.blacklist;
|
document.getElementById('blacklist').value = items.blacklist;
|
||||||
|
|||||||
BIN
graphics/wakatime-logo-38-gray.png
Normal file
BIN
graphics/wakatime-logo-38-gray.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
BIN
graphics/wakatime-logo-38-red.png
Normal file
BIN
graphics/wakatime-logo-38-red.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
File diff suppressed because it is too large
Load Diff
@@ -164,22 +164,13 @@ var _helpersChangeExtensionIconJs = require('./helpers/changeExtensionIcon.js');
|
|||||||
var _helpersChangeExtensionIconJs2 = _interopRequireDefault(_helpersChangeExtensionIconJs);
|
var _helpersChangeExtensionIconJs2 = _interopRequireDefault(_helpersChangeExtensionIconJs);
|
||||||
|
|
||||||
var in_array = require('./helpers/in_array');
|
var in_array = require('./helpers/in_array');
|
||||||
|
var config = require('./config.js');
|
||||||
|
|
||||||
var WakaTime = (function () {
|
var WakaTime = (function () {
|
||||||
function WakaTime(props) {
|
function WakaTime(props) {
|
||||||
_classCallCheck(this, WakaTime);
|
_classCallCheck(this, WakaTime);
|
||||||
|
|
||||||
this.tabsWithDevtoolsOpen = [];
|
this.tabsWithDevtoolsOpen = [];
|
||||||
|
|
||||||
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 = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(WakaTime, [{
|
_createClass(WakaTime, [{
|
||||||
@@ -196,12 +187,10 @@ var WakaTime = (function () {
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
value: function checkAuth() {
|
value: function checkAuth() {
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
var deferredObject = _jquery2['default'].Deferred();
|
var deferredObject = _jquery2['default'].Deferred();
|
||||||
|
|
||||||
_jquery2['default'].ajax({
|
_jquery2['default'].ajax({
|
||||||
url: this.currentUserApiUrl,
|
url: config.currentUserApiUrl,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function success(data) {
|
success: function success(data) {
|
||||||
|
|
||||||
@@ -209,7 +198,7 @@ var WakaTime = (function () {
|
|||||||
},
|
},
|
||||||
error: function error(xhr, status, err) {
|
error: function error(xhr, status, err) {
|
||||||
|
|
||||||
console.error(_this.currentUserApiUrl, status, err.toString());
|
console.error(config.currentUserApiUrl, status, err.toString());
|
||||||
|
|
||||||
deferredObject.resolve(false);
|
deferredObject.resolve(false);
|
||||||
}
|
}
|
||||||
@@ -225,40 +214,40 @@ var WakaTime = (function () {
|
|||||||
* and sends it to WakaTime for logging.
|
* and sends it to WakaTime for logging.
|
||||||
*/
|
*/
|
||||||
value: function recordHeartbeat() {
|
value: function recordHeartbeat() {
|
||||||
var _this2 = this;
|
var _this = this;
|
||||||
|
|
||||||
this.checkAuth().done(function (data) {
|
this.checkAuth().done(function (data) {
|
||||||
|
|
||||||
if (data !== false) {
|
if (data !== false) {
|
||||||
|
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
loggingEnabled: true
|
loggingEnabled: config.loggingEnabled
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
if (items.loggingEnabled === true) {
|
if (items.loggingEnabled === true) {
|
||||||
(0, _helpersChangeExtensionIconJs2['default'])();
|
(0, _helpersChangeExtensionIconJs2['default'])(config.colors.allGood);
|
||||||
|
|
||||||
chrome.idle.queryState(_this2.detectionIntervalInSeconds, function (newState) {
|
chrome.idle.queryState(config.detectionIntervalInSeconds, function (newState) {
|
||||||
|
|
||||||
if (newState === 'active') {
|
if (newState === 'active') {
|
||||||
// Get current tab URL.
|
// Get current tab URL.
|
||||||
chrome.tabs.query({ active: true }, function (tabs) {
|
chrome.tabs.query({ active: true }, function (tabs) {
|
||||||
var debug = false;
|
var debug = false;
|
||||||
// If the current active tab has devtools open
|
// If the current active tab has devtools open
|
||||||
if (in_array(tabs[0].id, _this2.tabsWithDevtoolsOpen)) debug = true;
|
if (in_array(tabs[0].id, _this.tabsWithDevtoolsOpen)) debug = true;
|
||||||
|
|
||||||
_this2.sendHeartbeat(tabs[0].url, debug);
|
_this.sendHeartbeat(tabs[0].url, debug);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
(0, _helpersChangeExtensionIconJs2['default'])('red');
|
(0, _helpersChangeExtensionIconJs2['default'])(config.colors.notLogging);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// User is not logged in.
|
// User is not logged in.
|
||||||
// Change extension icon to red color.
|
// Change extension icon to red color.
|
||||||
(0, _helpersChangeExtensionIconJs2['default'])('red');
|
(0, _helpersChangeExtensionIconJs2['default'])(config.colors.notSignedIn);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -297,7 +286,7 @@ var WakaTime = (function () {
|
|||||||
var deferredObject = _jquery2['default'].Deferred();
|
var deferredObject = _jquery2['default'].Deferred();
|
||||||
|
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
loggingType: this.loggingType
|
loggingType: config.loggingType
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
deferredObject.resolve(items.loggingType);
|
deferredObject.resolve(items.loggingType);
|
||||||
});
|
});
|
||||||
@@ -315,7 +304,7 @@ var WakaTime = (function () {
|
|||||||
* @param debug
|
* @param debug
|
||||||
*/
|
*/
|
||||||
value: function sendHeartbeat(entity, debug) {
|
value: function sendHeartbeat(entity, debug) {
|
||||||
var _this3 = this;
|
var _this2 = this;
|
||||||
|
|
||||||
var payload = null;
|
var payload = null;
|
||||||
|
|
||||||
@@ -327,19 +316,19 @@ var WakaTime = (function () {
|
|||||||
|
|
||||||
var domain = _UrlHelperJs2['default'].getDomainFromUrl(entity);
|
var domain = _UrlHelperJs2['default'].getDomainFromUrl(entity);
|
||||||
|
|
||||||
payload = _this3._preparePayload(domain, 'domain', debug);
|
payload = _this2._preparePayload(domain, 'domain', debug);
|
||||||
|
|
||||||
console.log(payload);
|
console.log(payload);
|
||||||
|
|
||||||
_this3.sendAjaxRequestToApi(payload);
|
_this2.sendAjaxRequestToApi(payload);
|
||||||
}
|
}
|
||||||
// Send entity in heartbeat
|
// Send entity in heartbeat
|
||||||
else if (loggingType == 'url') {
|
else if (loggingType == 'url') {
|
||||||
payload = _this3._preparePayload(entity, 'url', debug);
|
payload = _this2._preparePayload(entity, 'url', debug);
|
||||||
|
|
||||||
console.log(payload);
|
console.log(payload);
|
||||||
|
|
||||||
_this3.sendAjaxRequestToApi(payload);
|
_this2.sendAjaxRequestToApi(payload);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -354,27 +343,27 @@ var WakaTime = (function () {
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
value: function sendAjaxRequestToApi(payload) {
|
value: function sendAjaxRequestToApi(payload) {
|
||||||
var _this4 = this;
|
var _this3 = this;
|
||||||
|
|
||||||
var method = arguments[1] === undefined ? 'POST' : arguments[1];
|
var method = arguments[1] === undefined ? 'POST' : arguments[1];
|
||||||
|
|
||||||
var deferredObject = _jquery2['default'].Deferred();
|
var deferredObject = _jquery2['default'].Deferred();
|
||||||
|
|
||||||
_jquery2['default'].ajax({
|
_jquery2['default'].ajax({
|
||||||
url: this.heartbeatApiUrl,
|
url: config.heartbeatApiUrl,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
method: method,
|
method: method,
|
||||||
data: payload,
|
data: payload,
|
||||||
success: function success(response) {
|
success: function success(response) {
|
||||||
|
|
||||||
deferredObject.resolve(_this4);
|
deferredObject.resolve(_this3);
|
||||||
},
|
},
|
||||||
error: function error(xhr, status, err) {
|
error: function error(xhr, status, err) {
|
||||||
|
|
||||||
console.error(_this4.heartbeatApiUrl, status, err.toString());
|
console.error(config.heartbeatApiUrl, status, err.toString());
|
||||||
|
|
||||||
deferredObject.resolve(_this4);
|
deferredObject.resolve(_this3);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -388,10 +377,43 @@ var WakaTime = (function () {
|
|||||||
exports['default'] = WakaTime;
|
exports['default'] = WakaTime;
|
||||||
module.exports = exports['default'];
|
module.exports = exports['default'];
|
||||||
|
|
||||||
},{"./UrlHelper.js":2,"./helpers/changeExtensionIcon.js":4,"./helpers/currentTimestamp.js":5,"./helpers/in_array":6,"jquery":7}],4:[function(require,module,exports){
|
},{"./UrlHelper.js":2,"./config.js":4,"./helpers/changeExtensionIcon.js":5,"./helpers/currentTimestamp.js":6,"./helpers/in_array":7,"jquery":8}],4:[function(require,module,exports){
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Object.defineProperty(exports, '__esModule', {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports['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'
|
||||||
|
};
|
||||||
|
module.exports = exports['default'];
|
||||||
|
|
||||||
|
},{}],5:[function(require,module,exports){
|
||||||
/**
|
/**
|
||||||
* It changes the extension icon color.
|
* It changes the extension icon color.
|
||||||
* Supported values are: 'red', 'white' and ''.
|
* Supported values are: 'red', 'white', 'gray' and ''.
|
||||||
*/
|
*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@@ -408,7 +430,7 @@ function changeExtensionIcon() {
|
|||||||
if (color !== '') {
|
if (color !== '') {
|
||||||
color = '-' + color;
|
color = '-' + color;
|
||||||
|
|
||||||
path = './graphics/wakatime-logo-48' + color + '.png';
|
path = './graphics/wakatime-logo-38' + color + '.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
@@ -420,13 +442,13 @@ function changeExtensionIcon() {
|
|||||||
theme: 'light'
|
theme: 'light'
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
if (items.theme == 'light') {
|
if (items.theme == 'light') {
|
||||||
path = './graphics/wakatime-logo-48.png';
|
path = './graphics/wakatime-logo-38.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
path = './graphics/wakatime-logo-48-white.png';
|
path = './graphics/wakatime-logo-38-white.png';
|
||||||
|
|
||||||
chrome.browserAction.setIcon({
|
chrome.browserAction.setIcon({
|
||||||
path: path
|
path: path
|
||||||
@@ -438,7 +460,7 @@ function changeExtensionIcon() {
|
|||||||
|
|
||||||
module.exports = exports['default'];
|
module.exports = exports['default'];
|
||||||
|
|
||||||
},{}],5:[function(require,module,exports){
|
},{}],6:[function(require,module,exports){
|
||||||
/**
|
/**
|
||||||
* Returns UNIX timestamp
|
* Returns UNIX timestamp
|
||||||
*/
|
*/
|
||||||
@@ -454,7 +476,7 @@ exports["default"] = function () {
|
|||||||
|
|
||||||
module.exports = exports["default"];
|
module.exports = exports["default"];
|
||||||
|
|
||||||
},{}],6:[function(require,module,exports){
|
},{}],7:[function(require,module,exports){
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", {
|
Object.defineProperty(exports, "__esModule", {
|
||||||
@@ -474,7 +496,7 @@ function in_array(needle, haystack) {
|
|||||||
exports["default"] = in_array;
|
exports["default"] = in_array;
|
||||||
module.exports = exports["default"];
|
module.exports = exports["default"];
|
||||||
|
|
||||||
},{}],7:[function(require,module,exports){
|
},{}],8:[function(require,module,exports){
|
||||||
/*!
|
/*!
|
||||||
* jQuery JavaScript Library v2.1.4
|
* jQuery JavaScript Library v2.1.4
|
||||||
* http://jquery.com/
|
* http://jquery.com/
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ var _jquery2 = _interopRequireDefault(_jquery);
|
|||||||
global.jQuery = require('jquery');
|
global.jQuery = require('jquery');
|
||||||
require('bootstrap');
|
require('bootstrap');
|
||||||
|
|
||||||
|
var config = require('./config');
|
||||||
|
|
||||||
function detectCheckedRadio(name) {
|
function detectCheckedRadio(name) {
|
||||||
for (var i = 0; i < document.getElementsByName(name).length; i++) {
|
for (var i = 0; i < document.getElementsByName(name).length; i++) {
|
||||||
var button = document.getElementsByName(name)[i];
|
var button = document.getElementsByName(name)[i];
|
||||||
@@ -54,9 +56,9 @@ function save_options(e) {
|
|||||||
function restore_options() {
|
function restore_options() {
|
||||||
// Use default value color = 'red' and likesColor = true.
|
// Use default value color = 'red' and likesColor = true.
|
||||||
chrome.storage.sync.get({
|
chrome.storage.sync.get({
|
||||||
theme: 'light',
|
theme: config.theme,
|
||||||
blacklist: '',
|
blacklist: '',
|
||||||
loggingType: 'domain'
|
loggingType: config.loggingType
|
||||||
}, function (items) {
|
}, function (items) {
|
||||||
document.getElementById('theme').value = items.theme;
|
document.getElementById('theme').value = items.theme;
|
||||||
document.getElementById('blacklist').value = items.blacklist;
|
document.getElementById('blacklist').value = items.blacklist;
|
||||||
@@ -68,7 +70,40 @@ document.addEventListener('DOMContentLoaded', restore_options);
|
|||||||
document.getElementById('save').addEventListener('click', save_options);
|
document.getElementById('save').addEventListener('click', save_options);
|
||||||
|
|
||||||
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
||||||
},{"bootstrap":2,"jquery":15}],2:[function(require,module,exports){
|
},{"./config":2,"bootstrap":3,"jquery":16}],2:[function(require,module,exports){
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Object.defineProperty(exports, '__esModule', {
|
||||||
|
value: true
|
||||||
|
});
|
||||||
|
exports['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'
|
||||||
|
};
|
||||||
|
module.exports = exports['default'];
|
||||||
|
|
||||||
|
},{}],3:[function(require,module,exports){
|
||||||
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
|
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
|
||||||
require('../../js/transition.js')
|
require('../../js/transition.js')
|
||||||
require('../../js/alert.js')
|
require('../../js/alert.js')
|
||||||
@@ -82,7 +117,7 @@ require('../../js/popover.js')
|
|||||||
require('../../js/scrollspy.js')
|
require('../../js/scrollspy.js')
|
||||||
require('../../js/tab.js')
|
require('../../js/tab.js')
|
||||||
require('../../js/affix.js')
|
require('../../js/affix.js')
|
||||||
},{"../../js/affix.js":3,"../../js/alert.js":4,"../../js/button.js":5,"../../js/carousel.js":6,"../../js/collapse.js":7,"../../js/dropdown.js":8,"../../js/modal.js":9,"../../js/popover.js":10,"../../js/scrollspy.js":11,"../../js/tab.js":12,"../../js/tooltip.js":13,"../../js/transition.js":14}],3:[function(require,module,exports){
|
},{"../../js/affix.js":4,"../../js/alert.js":5,"../../js/button.js":6,"../../js/carousel.js":7,"../../js/collapse.js":8,"../../js/dropdown.js":9,"../../js/modal.js":10,"../../js/popover.js":11,"../../js/scrollspy.js":12,"../../js/tab.js":13,"../../js/tooltip.js":14,"../../js/transition.js":15}],4:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: affix.js v3.3.4
|
* Bootstrap: affix.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#affix
|
* http://getbootstrap.com/javascript/#affix
|
||||||
@@ -246,7 +281,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],4:[function(require,module,exports){
|
},{}],5:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: alert.js v3.3.4
|
* Bootstrap: alert.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#alerts
|
* http://getbootstrap.com/javascript/#alerts
|
||||||
@@ -342,7 +377,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],5:[function(require,module,exports){
|
},{}],6:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: button.js v3.3.4
|
* Bootstrap: button.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#buttons
|
* http://getbootstrap.com/javascript/#buttons
|
||||||
@@ -460,7 +495,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],6:[function(require,module,exports){
|
},{}],7:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: carousel.js v3.3.4
|
* Bootstrap: carousel.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#carousel
|
* http://getbootstrap.com/javascript/#carousel
|
||||||
@@ -699,7 +734,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],7:[function(require,module,exports){
|
},{}],8:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: collapse.js v3.3.4
|
* Bootstrap: collapse.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#collapse
|
* http://getbootstrap.com/javascript/#collapse
|
||||||
@@ -912,7 +947,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],8:[function(require,module,exports){
|
},{}],9:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: dropdown.js v3.3.4
|
* Bootstrap: dropdown.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#dropdowns
|
* http://getbootstrap.com/javascript/#dropdowns
|
||||||
@@ -1075,7 +1110,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],9:[function(require,module,exports){
|
},{}],10:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: modal.js v3.3.4
|
* Bootstrap: modal.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#modals
|
* http://getbootstrap.com/javascript/#modals
|
||||||
@@ -1416,7 +1451,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],10:[function(require,module,exports){
|
},{}],11:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: popover.js v3.3.4
|
* Bootstrap: popover.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#popovers
|
* http://getbootstrap.com/javascript/#popovers
|
||||||
@@ -1526,7 +1561,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],11:[function(require,module,exports){
|
},{}],12:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: scrollspy.js v3.3.4
|
* Bootstrap: scrollspy.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#scrollspy
|
* http://getbootstrap.com/javascript/#scrollspy
|
||||||
@@ -1700,7 +1735,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],12:[function(require,module,exports){
|
},{}],13:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: tab.js v3.3.4
|
* Bootstrap: tab.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#tabs
|
* http://getbootstrap.com/javascript/#tabs
|
||||||
@@ -1855,7 +1890,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],13:[function(require,module,exports){
|
},{}],14:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: tooltip.js v3.3.4
|
* Bootstrap: tooltip.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#tooltip
|
* http://getbootstrap.com/javascript/#tooltip
|
||||||
@@ -2333,7 +2368,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],14:[function(require,module,exports){
|
},{}],15:[function(require,module,exports){
|
||||||
/* ========================================================================
|
/* ========================================================================
|
||||||
* Bootstrap: transition.js v3.3.4
|
* Bootstrap: transition.js v3.3.4
|
||||||
* http://getbootstrap.com/javascript/#transitions
|
* http://getbootstrap.com/javascript/#transitions
|
||||||
@@ -2394,7 +2429,7 @@ require('../../js/affix.js')
|
|||||||
|
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
|
|
||||||
},{}],15:[function(require,module,exports){
|
},{}],16:[function(require,module,exports){
|
||||||
/*!
|
/*!
|
||||||
* jQuery JavaScript Library v2.1.4
|
* jQuery JavaScript Library v2.1.4
|
||||||
* http://jquery.com/
|
* http://jquery.com/
|
||||||
|
|||||||
Reference in New Issue
Block a user