/* global localStorage */ var React = require('react/addons') var ReactRouter = require('react-router') var Navigation = ReactRouter.Navigation var State = ReactRouter.State var Link = ReactRouter.Link var Reflux = require('reflux') var Modal = require('../Mixins/Modal') var UserStore = require('../Stores/UserStore') var AboutModal = require('./AboutModal') var PlanetCreateModal = require('./PlanetCreateModal') var TeamCreateModal = require('./TeamCreateModal') var ProfileImage = require('./ProfileImage') module.exports = React.createClass({ mixins: [Navigation, State, Reflux.listenTo(UserStore, 'onUserChange'), Modal], getInitialState: function () { return { isPlanetCreateModalOpen: false, currentUser: JSON.parse(localStorage.getItem('currentUser')) } }, onUserChange: function (res) { switch (res.status) { case 'userUpdated': if (this.state.currentUser.id === res.data.id) { this.setState({currentUser: res.data}) } break } }, openTeamCreateModal: function () { this.openModal(TeamCreateModal, {user: this.state.currentUser, transitionTo: this.transitionTo}) }, openAboutModal: function () { this.openModal(AboutModal) }, openPlanetCreateModal: function () { this.openModal(PlanetCreateModal, {transitionTo: this.transitionTo}) }, handleKeyDown: function (e) { if (this.state.currentUser == null) return if (e.metaKey && e.keyCode > 48 && e.keyCode < 58) { var planet = this.state.currentUser.Planets[e.keyCode - 49] if (planet != null) { this.transitionTo('planet', {userName: planet.userName, planetName: planet.name}) } e.preventDefault() } }, toggleProfilePopup: function () { this.openProfilePopup() }, openProfilePopup: function () { this.setState({isProfilePopupOpen: true}, function () { document.addEventListener('click', this.closeProfilePopup) }) }, closeProfilePopup: function () { document.removeEventListener('click', this.closeProfilePopup) this.setState({isProfilePopupOpen: false}) }, handleLogoutClick: function () { localStorage.removeItem('currentUser') localStorage.removeItem('token') this.transitionTo('login') }, render: function () { var params = this.getParams() if (this.state.currentUser == null) { return (
) } var planets = (this.state.currentUser.Planets.concat(this.state.currentUser.Teams.reduce(function (planets, team) { return team.Planets == null ? planets : planets.concat(team.Planets) }, []))).map(function (planet, index) { return (
  • {planet.name[0]}
    {planet.userName}/{planet.name}
    ⌘{index + 1}
  • ) }) var popup = this.renderPopup() return (
    {popup}
    ) }, renderPopup: function () { var teams = this.state.currentUser.Teams == null ? [] : this.state.currentUser.Teams.map(function (team) { return (
  • {team.profileName} ({team.name})
  • ) }) return (
    You
    • Profile ({this.state.currentUser.name})
    Team
      {teams}
    ) } })