From 960494b595bdd594dc5f11ba7be75064accf5598 Mon Sep 17 00:00:00 2001 From: ValeraS Date: Fri, 21 Sep 2018 17:30:16 +0300 Subject: [PATCH] reset form project's fields on submit --- packages/learn/src/redux/store.js | 5 ++--- .../Challenges/redux/completion-epic.js | 5 ++++- .../src/templates/Challenges/redux/index.js | 22 +++++++++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/learn/src/redux/store.js b/packages/learn/src/redux/store.js index 2575a1ffa1..5ffa2aeb54 100644 --- a/packages/learn/src/redux/store.js +++ b/packages/learn/src/redux/store.js @@ -8,12 +8,11 @@ import { } from 'redux'; import { combineEpics, createEpicMiddleware } from 'redux-observable'; -import { reducer as formReducer } from 'redux-form'; - import { reducer as app, epics as appEpics } from './app'; import { reducer as challenge, - epics as challengeEpics + epics as challengeEpics, + formReducer } from '../templates/Challenges/redux'; import { reducer as map } from '../components/Map/redux'; import servicesCreator from './createServices'; diff --git a/packages/learn/src/templates/Challenges/redux/completion-epic.js b/packages/learn/src/templates/Challenges/redux/completion-epic.js index c038b4e178..c8ae195d92 100644 --- a/packages/learn/src/templates/Challenges/redux/completion-epic.js +++ b/packages/learn/src/templates/Challenges/redux/completion-epic.js @@ -22,7 +22,8 @@ import { challengeMetaSelector, challengeTestsSelector, closeModal, - challengeFilesSelector + challengeFilesSelector, + updateProjectFormValues } from './'; import { userSelector, @@ -95,6 +96,8 @@ function submitProject(type, state) { username, csrfToken, challengeInfo + ).pipe( + concat(of(updateProjectFormValues({}))) ); } diff --git a/packages/learn/src/templates/Challenges/redux/index.js b/packages/learn/src/templates/Challenges/redux/index.js index bd4d9780c5..1e9c3b7eb0 100644 --- a/packages/learn/src/templates/Challenges/redux/index.js +++ b/packages/learn/src/templates/Challenges/redux/index.js @@ -1,5 +1,7 @@ import { createAction, handleActions } from 'redux-actions'; +import { reducer as reduxFormReducer } from 'redux-form'; + import { createTypes } from '../../../../utils/stateManagment'; import { createPoly } from '../utils/polyvinyl'; import challengeModalEpic from './challenge-modal-epic'; @@ -268,3 +270,23 @@ export const reducer = handleActions( }, initialState ); + +const resetProjectFormValues = handleActions({ + [types.updateProjectFormValues]: (state, { payload: { solution } }) => { + if (!solution) { + return { + ...state, + solution: {}, + githubLink: {} + }; + } + return state; + } + }, + {} +); + +export const formReducer = reduxFormReducer.plugin({ + 'frond-end-form': resetProjectFormValues, + 'back-end-form': resetProjectFormValues +});