{"action":"created","comment":{"url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/comments/117597876","pull_request_review_id":39323961,"id":117597876,"diff_hunk":"@@ -1,11 +1,27 @@\n+import combineSagas from '../../common/utils/combine-sagas';\n+import { ofType } from '../../common/utils/get-actions-of-type';\n import { makeToast } from '../../common/app/toasts/redux/actions';\n+import types from '../../common/app/redux/types';\n \n-export default function errorSaga(action$) {\n+function errorSaga(action$) {\n   return action$\n     .filter(({ error }) => !!error)\n+    .filter(({ type }) => type !== types.babelError)\n     .map(({ error }) => error)\n     .doOnNext(error => console.error(error))\n     .map(() => makeToast({\n       message: 'Something went wrong, please try again later'\n     }));\n }\n+\n+/* this is for catching transpilation errors for the React challenges */\n+function babelErrorSaga(action$) {","path":"client/sagas/err-saga.js","position":19,"original_position":19,"commit_id":"1667d92e83ddf0b6b0d226992c134e6c71e0f8e7","original_commit_id":"1667d92e83ddf0b6b0d226992c134e6c71e0f8e7","user":{"login":"BerkeleyTrue","id":6775919,"avatar_url":"https://avatars0.githubusercontent.com/u/6775919?v=3","gravatar_id":"","url":"https://api.github.com/users/BerkeleyTrue","html_url":"https://github.com/BerkeleyTrue","followers_url":"https://api.github.com/users/BerkeleyTrue/followers","following_url":"https://api.github.com/users/BerkeleyTrue/following{/other_user}","gists_url":"https://api.github.com/users/BerkeleyTrue/gists{/gist_id}","starred_url":"https://api.github.com/users/BerkeleyTrue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BerkeleyTrue/subscriptions","organizations_url":"https://api.github.com/users/BerkeleyTrue/orgs","repos_url":"https://api.github.com/users/BerkeleyTrue/repos","events_url":"https://api.github.com/users/BerkeleyTrue/events{/privacy}","received_events_url":"https://api.github.com/users/BerkeleyTrue/received_events","type":"User","site_admin":false},"body":"These should be caught right at the compiler, this file is a generic error handler","created_at":"2017-05-20T01:03:03Z","updated_at":"2017-05-20T01:10:09Z","html_url":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927#discussion_r117597876","pull_request_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927","_links":{"self":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/comments/117597876"},"html":{"href":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927#discussion_r117597876"},"pull_request":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927"}}},"pull_request":{"url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927","id":121190773,"html_url":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927","diff_url":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927.diff","patch_url":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927.patch","issue_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/14927","number":14927,"state":"open","locked":false,"title":"WIP: React-Redux Curriculum Migration","user":{"login":"bonham000","id":18126719,"avatar_url":"https://avatars0.githubusercontent.com/u/18126719?v=3","gravatar_id":"","url":"https://api.github.com/users/bonham000","html_url":"https://github.com/bonham000","followers_url":"https://api.github.com/users/bonham000/followers","following_url":"https://api.github.com/users/bonham000/following{/other_user}","gists_url":"https://api.github.com/users/bonham000/gists{/gist_id}","starred_url":"https://api.github.com/users/bonham000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonham000/subscriptions","organizations_url":"https://api.github.com/users/bonham000/orgs","repos_url":"https://api.github.com/users/bonham000/repos","events_url":"https://api.github.com/users/bonham000/events{/privacy}","received_events_url":"https://api.github.com/users/bonham000/received_events","type":"User","site_admin":false},"body":"@QuincyLarson @BerkeleyTrue this branch establishes compatibility between the [alpha version of the freeCodeCamp React/Redux Curriculum](https://github.com/bonham000/fcc-react-tests-module) and the core freeCodeCamp app.\r\n\r\n**Note:** This is a redo of previous PR because of issues with that branch. I've preserved my commit history here as a record of the sequence of changes I made.\r\n\r\nI've figured out how to reproduce the testing environment we used in the Alpha version of these challenges within the freeCodeCamp app, and this PR successfully demonstrates the implementation of several specific challenges. The challenges I selected as a whole encompass all of the functionality we rely on, so this effectively paves the way for all of the challenges to be migrated over.\r\n\r\nI'm aware that @BerkeleyTrue has a large, unmerged PR related to the new app layout (and possibly the React challenges as well?). There will possibly be merge conflicts between these two branches, so I'll defer to you guys to decide how to proceed from here.\r\n\r\nHere, @no-stack-dub-sack and I are ready to go and begin migrating all the challenges over. That will be a pretty tedious process, but I think that is all that is left now (with the exception of QA) after a consensus is reached on how to integrate these changes into the app. We could either, work on this branch until all the challenges are included here, or, merge this support in and then just start making smaller PRs that add in the actual challenges.\r\n\r\n### Main Notes:\r\n\r\n- I provided the React/Redux challenges with a new `challengeType`, `8`, in order to differentiate them from the other challenges. For the most part, they are treated like `js` challenges, but this allows us to throw a new error toast if code transpilation fails and potentially pipe these challenges through a separate transformation process (to provide the `stage-2` preset). I can expand on this later if needed.\r\n- The challenges rely on many dependencies in order to work, e.g. React, Redux, React-Redux packages. I provided these packages via imports directly within the app onto the document which runs the tests. The Enzyme methods we utilize are provide in a simliar manner.\r\n- I don't know how the unique IDs are generated from the challenges (in the JSON files). I was just changing random characters in the IDs to get the challenges to seed the database.\r\n- I also added an `npm restart` script which reseeds the database and restarts the server in one command to make the process of updating challenges a little more streamlined.\r\n- The automated tests that Gulp performs should be compatible with many of the React challenges now. However, there were some problems related to enabling class property transforms with Babel and with running certain Enzyme tests which are not yet resolved, however these should only affect a few challenges.\r\n\r\nI have some more notes, but they are more related to get the tests for the challenges working correctly. If we move forward with migrating these I'd be happy to create an issue to track that process and document the other notes I have.\r\n\r\n### Demo:\r\n\r\n<img width=\"1432\" alt=\"react\" src=\"https://cloud.githubusercontent.com/assets/18126719/26164242/ee379f22-3ae0-11e7-99c5-4d760793de71.png\">\r\n\r\n<img width=\"1432\" alt=\"react-redux\" src=\"https://cloud.githubusercontent.com/assets/18126719/26164267/029b5922-3ae1-11e7-88e8-69822695ff1d.png\">\r\n\r\n***\r\n\r\n#### Pre-Submission Checklist\r\n- [x] Your pull request targets the `staging` branch of freeCodeCamp.\r\n- [x] Branch starts with either `fix/`, `feature/`, or `translate/` (e.g. `fix/signin-issue`)\r\n- [ ] You have only one commit (if not, [squash](http://forum.freecodecamp.com/t/how-to-squash-multiple-commits-into-one-with-git/13231) them into one commit): commits unsquashed for review.\r\n- [x] All new and existing tests pass the command `npm test`. Use `git commit --amend` to amend any fixes.\r\n\r\n#### Type of Change\r\n- [x] New feature: this branch establishes the functionality to run the React/Redux challenges in the freeCodeCamp app.\r\n\r\n#### Checklist:\r\n- [x] Tested changes locally.\r\n","created_at":"2017-05-18T02:47:26Z","updated_at":"2017-05-20T01:10:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"97d051609604eab37c331f251b2ce2ba3ede89ef","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927/commits","review_comments_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927/comments","review_comment_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/14927/comments","statuses_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/statuses/1667d92e83ddf0b6b0d226992c134e6c71e0f8e7","head":{"label":"bonham000:feature/react-redux-curriculum-migration","ref":"feature/react-redux-curriculum-migration","sha":"1667d92e83ddf0b6b0d226992c134e6c71e0f8e7","user":{"login":"bonham000","id":18126719,"avatar_url":"https://avatars0.githubusercontent.com/u/18126719?v=3","gravatar_id":"","url":"https://api.github.com/users/bonham000","html_url":"https://github.com/bonham000","followers_url":"https://api.github.com/users/bonham000/followers","following_url":"https://api.github.com/users/bonham000/following{/other_user}","gists_url":"https://api.github.com/users/bonham000/gists{/gist_id}","starred_url":"https://api.github.com/users/bonham000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonham000/subscriptions","organizations_url":"https://api.github.com/users/bonham000/orgs","repos_url":"https://api.github.com/users/bonham000/repos","events_url":"https://api.github.com/users/bonham000/events{/privacy}","received_events_url":"https://api.github.com/users/bonham000/received_events","type":"User","site_admin":false},"repo":{"id":74696942,"name":"FreeCodeCamp","full_name":"bonham000/FreeCodeCamp","owner":{"login":"bonham000","id":18126719,"avatar_url":"https://avatars0.githubusercontent.com/u/18126719?v=3","gravatar_id":"","url":"https://api.github.com/users/bonham000","html_url":"https://github.com/bonham000","followers_url":"https://api.github.com/users/bonham000/followers","following_url":"https://api.github.com/users/bonham000/following{/other_user}","gists_url":"https://api.github.com/users/bonham000/gists{/gist_id}","starred_url":"https://api.github.com/users/bonham000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bonham000/subscriptions","organizations_url":"https://api.github.com/users/bonham000/orgs","repos_url":"https://api.github.com/users/bonham000/repos","events_url":"https://api.github.com/users/bonham000/events{/privacy}","received_events_url":"https://api.github.com/users/bonham000/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bonham000/FreeCodeCamp","description":"The https://FreeCodeCamp.com open source codebase and curriculum. Learn to code and help nonprofits.","fork":true,"url":"https://api.github.com/repos/bonham000/FreeCodeCamp","forks_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/forks","keys_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/teams","hooks_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/hooks","issue_events_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/issues/events{/number}","events_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/events","assignees_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/assignees{/user}","branches_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/branches{/branch}","tags_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/tags","blobs_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/git/refs{/sha}","trees_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/statuses/{sha}","languages_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/languages","stargazers_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/stargazers","contributors_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/contributors","subscribers_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/subscribers","subscription_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/subscription","commits_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/commits{/sha}","git_commits_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/git/commits{/sha}","comments_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/comments{/number}","issue_comment_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/issues/comments{/number}","contents_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/contents/{+path}","compare_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/merges","archive_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/downloads","issues_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/issues{/number}","pulls_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/pulls{/number}","milestones_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/milestones{/number}","notifications_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/labels{/name}","releases_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/releases{/id}","deployments_url":"https://api.github.com/repos/bonham000/FreeCodeCamp/deployments","created_at":"2016-11-24T18:31:19Z","updated_at":"2016-11-24T18:31:22Z","pushed_at":"2017-05-19T15:25:38Z","git_url":"git://github.com/bonham000/FreeCodeCamp.git","ssh_url":"git@github.com:bonham000/FreeCodeCamp.git","clone_url":"https://github.com/bonham000/FreeCodeCamp.git","svn_url":"https://github.com/bonham000/FreeCodeCamp","homepage":"","size":29906,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"staging"}},"base":{"label":"freeCodeCamp:staging","ref":"staging","sha":"f6b2326eb6568d57ece6e88d6b51dee533d36c46","user":{"login":"freeCodeCamp","id":9892522,"avatar_url":"https://avatars3.githubusercontent.com/u/9892522?v=3","gravatar_id":"","url":"https://api.github.com/users/freeCodeCamp","html_url":"https://github.com/freeCodeCamp","followers_url":"https://api.github.com/users/freeCodeCamp/followers","following_url":"https://api.github.com/users/freeCodeCamp/following{/other_user}","gists_url":"https://api.github.com/users/freeCodeCamp/gists{/gist_id}","starred_url":"https://api.github.com/users/freeCodeCamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freeCodeCamp/subscriptions","organizations_url":"https://api.github.com/users/freeCodeCamp/orgs","repos_url":"https://api.github.com/users/freeCodeCamp/repos","events_url":"https://api.github.com/users/freeCodeCamp/events{/privacy}","received_events_url":"https://api.github.com/users/freeCodeCamp/received_events","type":"Organization","site_admin":false},"repo":{"id":28457823,"name":"freeCodeCamp","full_name":"freeCodeCamp/freeCodeCamp","owner":{"login":"freeCodeCamp","id":9892522,"avatar_url":"https://avatars3.githubusercontent.com/u/9892522?v=3","gravatar_id":"","url":"https://api.github.com/users/freeCodeCamp","html_url":"https://github.com/freeCodeCamp","followers_url":"https://api.github.com/users/freeCodeCamp/followers","following_url":"https://api.github.com/users/freeCodeCamp/following{/other_user}","gists_url":"https://api.github.com/users/freeCodeCamp/gists{/gist_id}","starred_url":"https://api.github.com/users/freeCodeCamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freeCodeCamp/subscriptions","organizations_url":"https://api.github.com/users/freeCodeCamp/orgs","repos_url":"https://api.github.com/users/freeCodeCamp/repos","events_url":"https://api.github.com/users/freeCodeCamp/events{/privacy}","received_events_url":"https://api.github.com/users/freeCodeCamp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/freeCodeCamp/freeCodeCamp","description":"The https://freeCodeCamp.com open source codebase and curriculum. Learn to code and help nonprofits.","fork":false,"url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp","forks_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/forks","keys_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/teams","hooks_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/hooks","issue_events_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/events{/number}","events_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/events","assignees_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/assignees{/user}","branches_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/branches{/branch}","tags_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/tags","blobs_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/git/refs{/sha}","trees_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/statuses/{sha}","languages_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/languages","stargazers_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/stargazers","contributors_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/contributors","subscribers_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/subscribers","subscription_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/subscription","commits_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/commits{/sha}","git_commits_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/git/commits{/sha}","comments_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/comments{/number}","issue_comment_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/comments{/number}","contents_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/contents/{+path}","compare_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/merges","archive_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/downloads","issues_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues{/number}","pulls_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls{/number}","milestones_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/milestones{/number}","notifications_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/labels{/name}","releases_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/releases{/id}","deployments_url":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/deployments","created_at":"2014-12-24T17:49:19Z","updated_at":"2017-05-20T01:04:32Z","pushed_at":"2017-05-19T21:55:59Z","git_url":"git://github.com/freeCodeCamp/freeCodeCamp.git","ssh_url":"git@github.com:freeCodeCamp/freeCodeCamp.git","clone_url":"https://github.com/freeCodeCamp/freeCodeCamp.git","svn_url":"https://github.com/freeCodeCamp/freeCodeCamp","homepage":"","size":30211,"stargazers_count":273737,"watchers_count":273737,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11637,"mirror_url":null,"open_issues_count":467,"forks":11637,"open_issues":467,"watchers":273737,"default_branch":"staging"}},"_links":{"self":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927"},"html":{"href":"https://github.com/freeCodeCamp/freeCodeCamp/pull/14927"},"issue":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/14927"},"comments":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/issues/14927/comments"},"review_comments":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927/comments"},"review_comment":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/pulls/14927/commits"},"statuses":{"href":"https://api.github.com/repos/freeCodeCamp/freeCodeCamp/statuses/1667d92e83ddf0b6b0d226992c134e6c71e0f8e7"}}}}
{"actor":{"display_login":"BerkeleyTrue"}}