mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
on Refactoring...
This commit is contained in:
@@ -1,92 +1,64 @@
|
||||
/* global localStorage */
|
||||
|
||||
var React = require('react/addons')
|
||||
var ReactRouter = require('react-router')
|
||||
var RouteHandler = ReactRouter.RouteHandler
|
||||
var request = require('superagent')
|
||||
var Navigation = ReactRouter.Navigation
|
||||
var State = ReactRouter.State
|
||||
|
||||
var AuthActions = require('../Actions/AuthActions')
|
||||
var Hq = require('../Services/Hq')
|
||||
|
||||
var AuthStore = require('../Stores/AuthStore')
|
||||
var UserStore = require('../Stores/UserStore')
|
||||
|
||||
var apiUrl = require('../../../config').apiUrl
|
||||
|
||||
function fetchPlanet (planet) {
|
||||
request
|
||||
.get(apiUrl + planet.userName + '/' + planet.name)
|
||||
.send()
|
||||
.end(function (err, res) {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
return
|
||||
}
|
||||
|
||||
var _planet = res.body
|
||||
_planet.userName = planet.userName
|
||||
|
||||
_planet.Snippets = _planet.Snippets.map(function (snippet) {
|
||||
snippet.type = 'snippet'
|
||||
return snippet
|
||||
})
|
||||
|
||||
_planet.Blueprints = _planet.Blueprints.map(function (blueprint) {
|
||||
blueprint.type = 'blueprint'
|
||||
return blueprint
|
||||
})
|
||||
|
||||
localStorage.setItem('planet-' + _planet.id, JSON.stringify(_planet))
|
||||
console.log('planet-' + _planet.id + ' fetched')
|
||||
})
|
||||
}
|
||||
// function fetchPlanet (planet) {
|
||||
// return Hq.fetchPlanet(planet.userName, planet.name)
|
||||
// .then(function (res) {
|
||||
// var _planet = res.body
|
||||
// _planet.userName = planet.userName
|
||||
//
|
||||
// _planet.Snippets = _planet.Snippets.map(function (snippet) {
|
||||
// snippet.type = 'snippet'
|
||||
// return snippet
|
||||
// })
|
||||
//
|
||||
// _planet.Blueprints = _planet.Blueprints.map(function (blueprint) {
|
||||
// blueprint.type = 'blueprint'
|
||||
// return blueprint
|
||||
// })
|
||||
//
|
||||
// localStorage.setItem('planet-' + _planet.id, JSON.stringify(_planet))
|
||||
// console.log('planet-' + _planet.id + ' fetched')
|
||||
// })
|
||||
// .catch(function (err) {
|
||||
// console.error(err)
|
||||
// })
|
||||
// }
|
||||
|
||||
module.exports = React.createClass({
|
||||
mixins: [ReactRouter.Navigation, ReactRouter.State],
|
||||
mixins: [State, Navigation],
|
||||
componentDidMount: function () {
|
||||
this.unsubscribe = AuthStore.listen(this.onListen)
|
||||
|
||||
var user = JSON.parse(localStorage.getItem('user'))
|
||||
if (user != null) {
|
||||
AuthActions.refreshUser()
|
||||
return
|
||||
}
|
||||
this.transitionTo('login')
|
||||
},
|
||||
componentWillUnmount: function () {
|
||||
this.unsubscribe()
|
||||
},
|
||||
onListen: function (res) {
|
||||
if (res == null || res.status == null) {
|
||||
return
|
||||
}
|
||||
var user
|
||||
if (res.status === 'loggedIn' || res.status === 'registered') {
|
||||
user = res.data
|
||||
var planet = user.Planets.length > 0 ? user.Planets[0] : null
|
||||
if (planet == null) {
|
||||
this.transitionTo('user', {userName: user.name})
|
||||
return
|
||||
if (this.isActive('root')) {
|
||||
if (localStorage.getItem('currentUser') == null) {
|
||||
this.transitionTo('login')
|
||||
} else {
|
||||
this.transitionTo('home')
|
||||
}
|
||||
this.transitionTo('planetHome', {userName: user.name, planetName: planet.name})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
if (res.status === 'loggedOut') {
|
||||
this.transitionTo('login')
|
||||
return
|
||||
}
|
||||
|
||||
if (res.status === 'userRefreshed') {
|
||||
console.log('refreshed')
|
||||
user = res.data
|
||||
user.Planets.forEach(fetchPlanet)
|
||||
return
|
||||
}
|
||||
Hq.getUser()
|
||||
.then(function (res) {
|
||||
localStorage.setItem('currentUser', JSON.stringify(res.body))
|
||||
UserStore.Actions.update(res.body)
|
||||
})
|
||||
.catch(function (err) {
|
||||
if (err.status === 401) {
|
||||
localStorage.removeItem('currentUser')
|
||||
this.transitionTo('login')
|
||||
}
|
||||
console.error(err)
|
||||
}.bind(this))
|
||||
},
|
||||
render: function () {
|
||||
// Redirect Login state
|
||||
if (this.getPath() === '/') {
|
||||
this.transitionTo('/login')
|
||||
}
|
||||
return (
|
||||
<div className='Main'>
|
||||
<RouteHandler/>
|
||||
|
||||
Reference in New Issue
Block a user