import React, {PropTypes, Component} from 'react';
import {Dropdown, DropdownButton, DropdownItem, DropdownDivider} from '../base/dropdown';
import SizeTag from '../tags/SizeTag';
import StatusTag from '../tags/StatusTag';
import TimeTag from '../tags/TimeTag';
import * as models from '../../../models/index';
import PromptButton from '../base/PromptButton';
import {trackEvent} from '../../../analytics/index';
class ResponseHistoryDropdown extends Component {
state = {
responses: [],
};
_handleDeleteResponses = () => {
trackEvent('History', 'Delete Responses');
this.props.handleDeleteResponses(this.props.requestId);
};
_handleSetActiveResponse = responseId => {
trackEvent('History', 'Activate Response');
this.props.handleSetActiveResponse(responseId);
};
async _load (requestId) {
const responses = await models.response.findRecentForRequest(requestId);
// NOTE: this is bad practice, but I can't figure out a better way.
// This component may not be mounted if the user switches to a request that
// doesn't have a response
if (!this._unmounted) {
this.setState({responses});
}
}
componentWillUnmount () {
this._unmounted = true;
}
componentWillReceiveProps (nextProps) {
this._load(nextProps.requestId);
}
componentDidMount () {
this._unmounted = false;
this._load(this.props.requestId);
}
renderDropdownItem = (response, i) => {
const {activeResponseId} = this.props;
const active = response._id === activeResponseId;
return (
{active ? : }
{" "}
)
};
render () {
const {
activeResponseId, // Don't want this in ...extraProps
handleSetActiveResponse, // Don't want this in ...extraProps
handleDeleteResponses, // Don't want this in ...extraProps
isLatestResponseActive,
...extraProps
} = this.props;
const {responses} = this.state;
return (
{isLatestResponseActive ?
:
}
Response History
Clear History
Past Responses
{responses.map(this.renderDropdownItem)}
)
}
}
ResponseHistoryDropdown.propTypes = {
handleSetActiveResponse: PropTypes.func.isRequired,
handleDeleteResponses: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired,
requestId: PropTypes.string.isRequired,
activeResponseId: PropTypes.string.isRequired,
isLatestResponseActive: PropTypes.bool.isRequired,
};
export default ResponseHistoryDropdown;