import React, { PropTypes } from "react";
import { connect } from "react-redux";
import ControlRequest from "../utils/ControlRequest";
import propTypeSymbol from "../utils/propTypeSymbol";
import {
LOGIN_STATUS_UNKNOWN,
LOGIN_STATUS_PENDING,
LOGIN_STATUS_SUCCESS,
LOGIN_STATUS_FAILURE
} from "../constants/login";
const ID = "login-status-pane";
class LoginStatusPane extends React.Component
{
constructor(props) {
super(props);
}
componentDidMount() {
this.props.socketSend(ControlRequest.loginStatus());
}
render_unknown() {
return (
Fetching login status...
);
}
render_pending() {
return (
Logging in as {this.props.username}...
);
}
render_success() {
let motd_element;
if (this.props.motd) {
motd_element = (
MOTD: {this.props.motd}
);
}
return (
Logged in as {this.props.username}
{motd_element}
);
}
render_failure() {
return (
Failed to log in as {this.props.username}
Reason: {this.props.reason}
);
}
render() {
switch (this.props.status) {
case LOGIN_STATUS_UNKNOWN:
return this.render_unknown();
case LOGIN_STATUS_PENDING:
return this.render_pending();
case LOGIN_STATUS_SUCCESS:
return this.render_success();
case LOGIN_STATUS_FAILURE:
return this.render_failure();
}
}
}
LoginStatusPane.propTypes = {
status: propTypeSymbol.isRequired,
username: PropTypes.string,
motd: PropTypes.string,
reason: PropTypes.string,
socketSend: PropTypes.func.isRequired
};
export default LoginStatusPane;