import React from 'react';
import PropTypes from 'prop-types';
import RevisionRenderer from './RevisionRenderer';
export default class RevisionLoader extends React.Component {
constructor(props) {
super(props);
this.logger = require('@alias/logger')('growi:Page:RevisionLoader');
this.state = {
markdown: '',
error: null,
};
this.loadData = this.loadData.bind(this);
}
componentWillMount() {
this.loadData();
}
loadData() {
const requestData = {
page_id: this.props.pageId,
revision_id: this.props.revisionId,
};
// load data with REST API
this.props.crowi.apiGet('/revisions.get', requestData)
.then(res => {
if (!res.ok) {
throw new Error(res.error);
}
this.setState({
markdown: res.revision.body,
error: null,
});
})
.catch(err => {
this.setState({ error: err });
});
}
render() {
let markdown = this.state.markdown;
if (this.state.error != null) {
markdown = `${this.state.error}`;
}
return (
);
}
}
RevisionLoader.propTypes = {
crowi: PropTypes.object.isRequired,
crowiRenderer: PropTypes.object.isRequired,
pageId: PropTypes.string.isRequired,
pagePath: PropTypes.string.isRequired,
revisionId: PropTypes.string.isRequired,
lazy: PropTypes.bool.isRequired,
highlightKeywords: PropTypes.string,
};