Files
freeCodeCamp/common/app/routes/challenges/redux/actions.js

136 lines
4.3 KiB
JavaScript
Raw Normal View History

import { createAction } from 'redux-actions';
2016-05-13 20:36:54 -07:00
import { updateContents } from '../../../../utils/polyvinyl';
import { getMouse, loggerToStr } from '../utils';
import types from './types';
// step
export const goToStep = createAction(types.goToStep);
2016-06-08 18:48:30 -07:00
export const completeAction = createAction(types.completeAction);
export const openLightBoxImage = createAction(types.openLightBoxImage);
export const closeLightBoxImage = createAction(types.closeLightBoxImage);
// challenges
2016-06-09 16:02:51 -07:00
export const fetchChallenge = createAction(
types.fetchChallenge,
(dashedName, block) => ({ dashedName, block })
);
export const fetchChallengeCompleted = createAction(
types.fetchChallengeCompleted,
(_, challenge) => challenge,
entities => ({ entities })
);
export const resetUi = createAction(types.resetUi);
export const updateHint = createAction(types.updateHint);
export const lockUntrustedCode = createAction(types.lockUntrustedCode);
export const unlockUntrustedCode = createAction(
types.unlockUntrustedCode,
() => null
);
export const fetchChallenges = createAction(types.fetchChallenges);
export const fetchChallengesCompleted = createAction(
types.fetchChallengesCompleted,
(_, superBlocks) => superBlocks,
entities => ({ entities })
);
export const updateCurrentChallenge = createAction(
types.updateCurrentChallenge
);
2016-07-07 20:02:03 -07:00
export const resetChallenge = createAction(types.resetChallenge);
// replaceChallenge(dashedname) => Action
export const replaceChallenge = createAction(types.replaceChallenge);
// map
export const updateFilter = createAction(
types.updateFilter,
e => e.target.value
);
export const initMap = createAction(types.initMap);
2016-06-21 16:28:13 -07:00
export const toggleThisPanel = createAction(types.toggleThisPanel);
export const collapseAll = createAction(types.collapseAll);
export const expandAll = createAction(types.expandAll);
2016-06-21 16:28:13 -07:00
export const clearFilter = createAction(types.clearFilter);
2016-05-11 18:38:08 -07:00
// files
2016-05-13 20:36:54 -07:00
export const updateFile = createAction(
types.updateFile,
(content, file) => updateContents(content, file)
);
2016-05-20 12:42:26 -07:00
2016-05-11 18:38:08 -07:00
export const updateFiles = createAction(types.updateFiles);
2016-05-20 12:42:26 -07:00
// rechallenge
export const executeChallenge = createAction(
types.executeChallenge,
() => null
);
export const updateMain = createAction(types.updateMain);
2016-05-20 12:42:26 -07:00
export const frameMain = createAction(types.frameMain);
export const frameTests = createAction(types.frameTests);
export const runTests = createAction(types.runTests);
export const updateTests = createAction(types.updateTests);
export const initOutput = createAction(types.initOutput, loggerToStr);
export const updateOutput = createAction(types.updateOutput, loggerToStr);
2016-05-27 22:07:10 -07:00
export const checkChallenge = createAction(types.checkChallenge);
2016-06-07 20:41:42 -07:00
export const showProjectSubmit = createAction(types.showProjectSubmit);
2016-06-01 15:52:08 -07:00
export const submitChallenge = createAction(types.submitChallenge);
export const moveToNextChallenge = createAction(types.moveToNextChallenge);
2016-05-27 22:07:10 -07:00
// code storage
export const saveCode = createAction(types.saveCode);
export const loadCode = createAction(types.loadCode);
export const savedCodeFound = createAction(types.savedCodeFound);
// video challenges
export const toggleQuestionView = createAction(types.toggleQuestionView);
export const grabQuestion = createAction(types.grabQuestion, e => {
let { pageX, pageY, touches } = e;
if (touches) {
e.preventDefault();
// these re-assigns the values of pageX, pageY from touches
({ pageX, pageY } = touches[0]);
}
const delta = [pageX, pageY];
const mouse = [0, 0];
return { delta, mouse };
});
export const releaseQuestion = createAction(types.releaseQuestion);
export const moveQuestion = createAction(
types.moveQuestion,
({ e, delta }) => getMouse(e, delta)
);
// answer({
// e: Event,
// answer: Boolean,
// userAnswer: Boolean,
// info: String,
// threshold: Number
// }) => Action
export const answerQuestion = createAction(types.answerQuestion);
export const startShake = createAction(types.startShake);
export const endShake = createAction(types.primeNextQuestion);
export const goToNextQuestion = createAction(types.goToNextQuestion);
export const videoCompleted = createAction(types.videoCompleted);
// bug
export const openBugModal = createAction(types.openBugModal);
export const closeBugModal = createAction(types.closeBugModal);
export const openIssueSearch = createAction(types.openIssueSearch);
export const createIssue = createAction(types.createIssue);