// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var UserStore = require('../stores/user_store.jsx'); var Client = require('../utils/client.jsx'); var AsyncClient = require('../utils/async_client.jsx'); function getStateFromStoresForSessions() { return { sessions: UserStore.getSessions(), server_error: null, client_error: null }; } module.exports = React.createClass({ submitRevoke: function(altId) { var self = this; Client.revokeSession(altId, function(data) { AsyncClient.getSessions(); }.bind(this), function(err) { state = getStateFromStoresForSessions(); state.server_error = err; this.setState(state); }.bind(this) ); }, componentDidMount: function() { UserStore.addSessionsChangeListener(this._onChange); AsyncClient.getSessions(); var self = this; $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', function(e) { self.setState({ moreInfo: [] }); }); }, componentWillUnmount: function() { UserStore.removeSessionsChangeListener(this._onChange); }, _onChange: function() { this.setState(getStateFromStoresForSessions()); }, handleMoreInfo: function(index) { var newMoreInfo = this.state.moreInfo; newMoreInfo[index] = true; this.setState({ moreInfo: newMoreInfo }); }, getInitialState: function() { var initialState = getStateFromStoresForSessions(); initialState.moreInfo = []; return initialState; }, render: function() { var activityList = []; var server_error = this.state.server_error ? this.state.server_error : null; for (var i = 0; i < this.state.sessions.length; i++) { var currentSession = this.state.sessions[i]; var lastAccessTime = new Date(currentSession.last_activity_at); var firstAccessTime = new Date(currentSession.create_at); var devicePicture = ""; if (currentSession.props.platform === "Windows") { devicePicture = "fa fa-windows"; } else if (currentSession.props.platform === "Macintosh" || currentSession.props.platform === "iPhone") { devicePicture = "fa fa-apple"; } else if (currentSession.props.platform === "Linux") { devicePicture = "fa fa-linux"; } activityList[i] = (
{currentSession.props.platform}
{"Last activity: " + lastAccessTime.toDateString() + ", " + lastAccessTime.toLocaleTimeString()}
{ this.state.moreInfo[i] ?
{"First time active: " + firstAccessTime.toDateString() + ", " + lastAccessTime.toLocaleTimeString()}
{"OS: " + currentSession.props.os}
{"Browser: " + currentSession.props.browser}
{"Session ID: " + currentSession.alt_id}
: More info }
); } return (
); } });