Hearbeats now work. Moved checkAuth from Wakatime react class to main wakatime class.

This commit is contained in:
Mario Basic
2015-06-03 21:08:52 +02:00
parent c92bef4615
commit af4c748763
9 changed files with 602 additions and 365 deletions

View File

@@ -3,6 +3,7 @@ var UrlHelper = require('./UrlHelper');
var $ = require('jquery');
var currentTimestamp = require('./helpers/currentTimestamp');
var changeExtensionIcon = require('./helpers/changeExtensionIcon');
class WakaTime {
@@ -12,34 +13,81 @@ class WakaTime {
heartbeatApiUrl = 'https://wakatime.com/api/v1/users/current/heartbeats';
currentUserApiUrl = 'https://wakatime.com/api/v1/users/current';
checkAuth()
{
var deferredObject = $.Deferred();
$.ajax({
url: this.currentUserApiUrl,
dataType: 'json',
success: (data) => {
deferredObject.resolve(data.data);
},
error: (xhr, status, err) => {
console.error(this.currentUserApiUrl, status, err.toString());
deferredObject.resolve(false);
}
});
return deferredObject.promise();
}
recordHeartbeat()
{
console.log('recording heartbeat.');
this.checkAuth().done(data => {
chrome.idle.queryState(this.detectionIntervalInSeconds, (newState) => {
if(data !== false){
console.log(newState);
console.log('user is logged id.');
// User is logged in.
changeExtensionIcon();
if(newState === 'active')
{
// Get current tab URL.
chrome.tabs.query({active: true}, (tabs) => {
console.log(tabs[0].url);
console.log('recording heartbeat.');
this.sendHeartbeat(tabs[0].url);
chrome.idle.queryState(this.detectionIntervalInSeconds, (newState) => {
console.log(newState);
if(newState === 'active')
{
// Get current tab URL.
chrome.tabs.query({active: true}, (tabs) => {
console.log(tabs[0].url);
this.sendHeartbeat(tabs[0].url);
});
}
});
}
})
else {
// User is not logged in.
changeExtensionIcon('red');
console.log('user is not logged id.');
//TODO: Redirect user to wakatime login page.
//
}
});
}
_preparePayload(entity, type, debug = false)
{
return {
return JSON.stringify({
entity: entity,
type: type,
time: currentTimestamp(),
is_debugging: debug
};
});
}
_getLoggingType()
@@ -97,6 +145,7 @@ class WakaTime {
$.ajax({
url: this.heartbeatApiUrl,
dataType: 'json',
contentType: 'application/json',
method: method,
data: payload,
success: (response) => {

View File

@@ -6,10 +6,10 @@ var MainList = require('./MainList.react');
var changeExtensionIcon = require('../helpers/changeExtensionIcon');
var WakaTimeOriginal = require('../WakaTime');
class WakaTime extends React.Component
{
currentUserApiUrl = 'https://wakatime.com/api/v1/users/current';
logoutUserUrl = 'https://wakatime.com/logout';
state = {
@@ -34,7 +34,9 @@ class WakaTime extends React.Component
}
});
this.checkAuth().done(data => {
var wakatime = new WakaTimeOriginal;
wakatime.checkAuth().done(data => {
if(data !== false){
@@ -61,29 +63,6 @@ class WakaTime extends React.Component
}
checkAuth()
{
var deferredObject = $.Deferred();
$.ajax({
url: this.currentUserApiUrl,
dataType: 'json',
success: (data) => {
deferredObject.resolve(data.data);
},
error: (xhr, status, err) => {
console.error(this.currentUserApiUrl, status, err.toString());
deferredObject.resolve(false);
}
});
return deferredObject.promise();
}
logoutUser()
{
var deferredObject = $.Deferred();

View File

@@ -7,28 +7,13 @@
*/
export default function changeExtensionIcon(color = '') {
var canvas = document.getElementById('icon');
var context = canvas.getContext('2d');
var x = 0;
var y = 0;
var width = 19;
var height = 19;
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, x, y, width, height);
var imageData = context.getImageData(x, y, width, height);
chrome.browserAction.setIcon({
imageData: imageData
});
};
if(color !== ''){
color = '-' + color;
}
imageObj.src = 'graphics/wakatime-logo-48' + color + '.png';
var path = './graphics/wakatime-logo-48' + color + '.png';
chrome.browserAction.setIcon({
path: path
});
}