Auth now works. Added user profile panel with gravatar.

This commit is contained in:
Mario Basic
2015-05-29 02:08:19 +02:00
parent 92b33ac18c
commit 40900759d8
7 changed files with 813 additions and 234 deletions

View File

@@ -1,4 +1,5 @@
var React = require("react");
var $ = require('jquery');
var NavBar = require('./NavBar.react');
var MainList = require('./MainList.react');
@@ -7,6 +8,19 @@ var changeExtensionIcon = require('../helpers/changeExtensionIcon');
class WakaTime extends React.Component
{
currentUserApiUrl = 'https://wakatime.com/api/v1/users/current';
logoutUserUrl = 'https://wakatime.com/logout';
state = {
user: {
full_name: null,
email: null,
photo: null
},
loggedIn: false
};
componentDidMount()
{
chrome.storage.sync.get({
@@ -19,6 +33,96 @@ class WakaTime extends React.Component
changeExtensionIcon('white');
}
});
this.checkAuth().done(data => {
if(data !== false){
this.setState({
user: {
full_name: data.full_name,
email: data.email,
photo: data.photo
},
loggedIn: true
});
changeExtensionIcon();
}
else {
changeExtensionIcon('red');
//TODO: Redirect user to wakatime login page.
//
}
});
}
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();
$.ajax({
url: this.logoutUserUrl,
method: 'GET',
success: () => {
deferredObject.resolve(this);
},
error: (xhr, status, err) => {
console.error(this.logoutUserUrl, status, err.toString());
deferredObject.resolve(this);
}
});
return deferredObject.promise();
}
_logoutUser()
{
this.logoutUser().done(() => {
this.setState({
user: {
full_name: null,
email: null,
photo: null
},
loggedIn: false
});
changeExtensionIcon('red');
});
}
render()
@@ -29,7 +133,7 @@ class WakaTime extends React.Component
<div className="container">
<div className="row">
<div className="col-md-12">
<MainList />
<MainList user={this.state.user} logoutUser={this._logoutUser.bind(this)} loggedIn={this.state.loggedIn} />
</div>
</div>
</div>