// 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"; } activityList[i] = (