parent
6c698acef0
commit
6813f512e6
@ -0,0 +1,13 @@
|
||||
import api from '../api';
|
||||
|
||||
export const FETCH_ABOUT_PAGE_REQUEST = 'FETCH_ABOUT_PAGE_REQUEST';
|
||||
export const FETCH_ABOUT_PAGE_FAIL = 'FETCH_ABOUT_PAGE_FAIL';
|
||||
|
||||
export function fetchAboutPage(slug = 'index') {
|
||||
return (dispatch, getState) => {
|
||||
dispatch({ type: FETCH_ABOUT_PAGE_REQUEST, slug });
|
||||
return api(getState).get(`/soapbox/about/${slug}.html`).catch(error => {
|
||||
dispatch({ type: FETCH_ABOUT_PAGE_FAIL, slug });
|
||||
});
|
||||
};
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { fetchAboutPage } from 'gabsocial/actions/about';
|
||||
|
||||
class AboutPage extends ImmutablePureComponent {
|
||||
|
||||
state = {
|
||||
pageHtml: '',
|
||||
}
|
||||
|
||||
loadPageHtml = () => {
|
||||
const { dispatch, match } = this.props;
|
||||
const { slug } = match.params;
|
||||
dispatch(fetchAboutPage(slug)).then(response => {
|
||||
this.setState({ pageHtml: response.data });
|
||||
}).catch(error => {
|
||||
// TODO: Better error handling. 404 page?
|
||||
this.setState({ pageHtml: '<h1>Page not found</h1>' });
|
||||
});
|
||||
}
|
||||
|
||||
componentWillMount() {
|
||||
this.loadPageHtml();
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState) {
|
||||
const { slug } = this.props.match.params;
|
||||
const { slug: prevSlug } = prevProps.match.params;
|
||||
if (slug !== prevSlug) this.loadPageHtml();
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div dangerouslySetInnerHTML={{ __html: this.state.pageHtml }} />
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default connect()(AboutPage);
|
@ -0,0 +1,3 @@
|
||||
<h1>Hello world!</h1>
|
||||
|
||||
<p>You made it.</p>
|
Loading…
Reference in new issue