import { getResourceKind } from "../../models/resource";
import FilterBuilder from "../../common/api/filter-builder";
import { ThunkAction } from "../../../node_modules/redux-thunk";
+import { RootState } from "../store";
const actions = unionize({
- OPEN_PROJECT_CREATOR: ofType<{ownerUuid: string}>(),
+ OPEN_PROJECT_CREATOR: ofType<{ ownerUuid: string }>(),
CLOSE_PROJECT_CREATOR: ofType<{}>(),
CREATE_PROJECT: ofType<Partial<ProjectResource>>(),
CREATE_PROJECT_SUCCESS: ofType<ProjectResource>(),
};
export const createProject = (project: Partial<ProjectResource>) =>
- (dispatch: Dispatch) => {
- dispatch(actions.CREATE_PROJECT(project));
+ (dispatch: Dispatch, getState: () => RootState) => {
+ const { ownerUuid } = getState().projects.creator;
+ const projectData = { ownerUuid, ...project };
+ dispatch(actions.CREATE_PROJECT(projectData));
return projectService
- .create(project)
+ .create(projectData)
.then(project => dispatch(actions.CREATE_PROJECT_SUCCESS(project)))
.catch(() => dispatch(actions.CREATE_PROJECT_ERROR("Could not create a project")));
};
return actions.match(action, {
OPEN_PROJECT_CREATOR: ({ ownerUuid }) => updateCreator(state, { ownerUuid, opened: true, pending: false }),
CLOSE_PROJECT_CREATOR: () => updateCreator(state, { opened: false }),
- CREATE_PROJECT: () => updateCreator(state, { pending: true }),
+ CREATE_PROJECT: () => updateCreator(state, { opened: false, pending: true }),
CREATE_PROJECT_SUCCESS: () => updateCreator(state, { ownerUuid: "", pending: false }),
CREATE_PROJECT_ERROR: () => updateCreator(state, { ownerUuid: "", pending: false }),
REMOVE_PROJECT: () => state,
import { Dispatch } from "../../../node_modules/redux";
import { RootState } from "../../store/store";
import DialogProjectCreate from "../dialog-create/dialog-project-create";
-import actions from "../../store/project/project-action";
+import actions, { createProject } from "../../store/project/project-action";
const mapStateToProps = (state: RootState) => ({
open: state.projects.creator.opened
const mapDispatchToProps = (dispatch: Dispatch) => ({
handleClose: () => {
dispatch(actions.CLOSE_PROJECT_CREATOR());
+ },
+ onSubmit: (data: { name: string, description: string }) => {
+ dispatch<any>(createProject(data));
}
});
interface ProjectCreateProps {
open: boolean;
handleClose: () => void;
+ onSubmit: (data: { name: string, description: string }) => void;
}
interface DialogState {
</DialogContent>
<DialogActions>
<Button onClick={handleClose} className={classes.button} color="primary">CANCEL</Button>
- <Button onClick={handleClose} className={classes.lastButton} color="primary" disabled={!this.state.isNameValid || (!this.state.isDescriptionValid && description.length > 0)} variant="raised">CREATE A PROJECT</Button>
+ <Button onClick={this.handleSubmit} className={classes.lastButton} color="primary" disabled={!this.state.isNameValid || (!this.state.isDescriptionValid && description.length > 0)} variant="raised">CREATE A PROJECT</Button>
</DialogActions>
</div>
</Dialog>
);
}
+ handleSubmit = () => {
+ this.props.onSubmit({
+ name: this.state.name,
+ description: this.state.description
+ });
+ }
+
handleProjectName(e: any) {
this.setState({
name: e.target.value,