zcash-grant-system/frontend/client/pages/proposal-edit.tsx

49 lines
1.4 KiB
TypeScript
Raw Normal View History

2018-11-13 08:07:09 -08:00
import React from 'react';
import { connect } from 'react-redux';
import { withRouter, RouteComponentProps } from 'react-router';
2018-11-13 08:07:09 -08:00
import CreateFlow from 'components/CreateFlow';
import { initializeForm } from 'modules/create/actions';
import { AppState } from 'store/reducers';
2019-01-23 07:15:59 -08:00
import Loader from 'components/Loader';
interface StateProps {
form: AppState['create']['form'];
isInitializingForm: AppState['create']['isInitializingForm'];
initializeFormError: AppState['create']['initializeFormError'];
}
interface DispatchProps {
initializeForm: typeof initializeForm;
}
type Props = StateProps & DispatchProps & RouteComponentProps<{ id: string }>;
class ProposalEdit extends React.Component<Props> {
componentWillMount() {
const proposalId = parseInt(this.props.match.params.id, 10);
this.props.initializeForm(proposalId);
}
2018-11-13 08:07:09 -08:00
render() {
const { form, initializeFormError } = this.props;
if (form) {
return <CreateFlow />;
} else if (initializeFormError) {
return <h1>{initializeFormError}</h1>;
} else {
2019-01-23 07:15:59 -08:00
return <Loader />;
}
2018-11-13 08:07:09 -08:00
}
2018-11-13 08:07:37 -08:00
}
2018-11-13 08:07:09 -08:00
const ConnectedProposalEdit = connect<StateProps, DispatchProps, {}, AppState>(
state => ({
form: state.create.form,
isInitializingForm: state.create.isInitializingForm,
initializeFormError: state.create.initializeFormError,
}),
{ initializeForm },
)(ProposalEdit);
export default withRouter(ConnectedProposalEdit);