From 0e8c0b847044181492e731e339ba46e77c533f8b Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Thu, 18 Aug 2016 19:33:24 -0700 Subject: [PATCH] Feature(code-storage): clear code storage on challenge completion --- client/sagas/code-storage-saga.js | 11 ++++++++++- common/app/routes/challenges/redux/actions.js | 1 + common/app/routes/challenges/redux/completion-saga.js | 8 ++++++-- common/app/routes/challenges/redux/types.js | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/client/sagas/code-storage-saga.js b/client/sagas/code-storage-saga.js index e1ad5d7b4f..a8aebbdea3 100644 --- a/client/sagas/code-storage-saga.js +++ b/client/sagas/code-storage-saga.js @@ -50,6 +50,15 @@ function legacyToFile(code, files, key) { return { [key]: updateContents(code, files[key]) }; } +export function clearCodeSaga(actions, getState) { + return actions + ::ofType(types.clearSavedCode) + .map(() => { + const { challengesApp: { id = '' } } = getState(); + store.clear(id); + return null; + }); +} export function saveCodeSaga(actions, getState) { return actions ::ofType(types.saveCode) @@ -114,4 +123,4 @@ export function loadCodeSaga(actions$, getState, { window, location }) { }); } -export default combineSagas(saveCodeSaga, loadCodeSaga); +export default combineSagas(saveCodeSaga, loadCodeSaga, clearCodeSaga); diff --git a/common/app/routes/challenges/redux/actions.js b/common/app/routes/challenges/redux/actions.js index c2feeded8c..47a6b61b2d 100644 --- a/common/app/routes/challenges/redux/actions.js +++ b/common/app/routes/challenges/redux/actions.js @@ -90,6 +90,7 @@ export const moveToNextChallenge = createAction(types.moveToNextChallenge); export const saveCode = createAction(types.saveCode); export const loadCode = createAction(types.loadCode); export const savedCodeFound = createAction(types.savedCodeFound); +export const clearSavedCode = createAction(types.clearSavedCode); // video challenges diff --git a/common/app/routes/challenges/redux/completion-saga.js b/common/app/routes/challenges/redux/completion-saga.js index d5cad8f32f..c12f820787 100644 --- a/common/app/routes/challenges/redux/completion-saga.js +++ b/common/app/routes/challenges/redux/completion-saga.js @@ -1,7 +1,10 @@ import { Observable } from 'rx'; import types from './types'; -import { moveToNextChallenge } from './actions'; +import { + moveToNextChallenge, + clearSavedCode +} from './actions'; import { challengeSelector } from './selectors'; import { randomCompliment } from '../../../utils/get-words'; @@ -24,7 +27,8 @@ function postChallenge(url, username, _csrf, challengeInfo) { updateUserChallenge( username, { ...challengeInfo, lastUpdated, completedDate } - ) + ), + clearSavedCode() ); }) .catch(createErrorObservable); diff --git a/common/app/routes/challenges/redux/types.js b/common/app/routes/challenges/redux/types.js index 5601ff2935..d6189961a9 100644 --- a/common/app/routes/challenges/redux/types.js +++ b/common/app/routes/challenges/redux/types.js @@ -51,6 +51,7 @@ export default createTypes([ 'saveCode', 'loadCode', 'savedCodeFound', + 'clearSavedCode', // video challenges 'toggleQuestionView',