From 3da2a3eea98dbc331ce1da4f717146eea81b8d9e Mon Sep 17 00:00:00 2001 From: Bouncey Date: Sun, 30 Sep 2018 12:19:37 +0100 Subject: [PATCH] fix(updates): Fix learn -> server communication --- client/gatsby-config.js | 8 ++-- .../Donation/components/DonateForm.js | 4 +- client/src/redux/createServices.js | 41 ------------------- client/src/redux/createStore.js | 17 +++----- .../Challenges/redux/completion-epic.js | 6 +-- .../redux/current-challenge-epic.js | 2 +- .../templates/Challenges/utils/postUpdate$.js | 5 ++- client/src/utils/ajax.js | 2 +- 8 files changed, 19 insertions(+), 66 deletions(-) delete mode 100644 client/src/redux/createServices.js diff --git a/client/gatsby-config.js b/client/gatsby-config.js index a49ef56c88..dd28590101 100644 --- a/client/gatsby-config.js +++ b/client/gatsby-config.js @@ -7,10 +7,10 @@ module.exports = { title: 'freeCodeCamp', siteUrl: 'https://www.freecodecamp.org' }, - // proxy: { - // prefix: '/internal', - // url: 'http://localhost:3000' - // }, + proxy: { + prefix: '/internal', + url: 'http://localhost:3000' + }, plugins: [ 'gatsby-plugin-react-helmet', { diff --git a/client/src/components/Donation/components/DonateForm.js b/client/src/components/Donation/components/DonateForm.js index cdde3b9d7c..35ab8e38c2 100644 --- a/client/src/components/Donation/components/DonateForm.js +++ b/client/src/components/Donation/components/DonateForm.js @@ -4,7 +4,7 @@ import isEmail from 'validator/lib/isEmail'; import CardForm from './CardForm'; import { injectStripe } from 'react-stripe-elements'; -import { postJSON$ } from '../../../templates/Challenges/utils/ajax-stream'; +import postUpdate$ from '../../../templates/Challenges/utils/postUpdate$'; const propTypes = { email: PropTypes.string, @@ -102,7 +102,7 @@ class DonateForm extends PureComponent { processing: true } })); - return postJSON$('/external/donate/charge-stripe', { + return postUpdate$('/donate/charge-stripe', { token, amount }).subscribe( diff --git a/client/src/redux/createServices.js b/client/src/redux/createServices.js deleted file mode 100644 index 5c76cb9ef5..0000000000 --- a/client/src/redux/createServices.js +++ /dev/null @@ -1,41 +0,0 @@ -import { Observable } from 'rxjs'; -import Fetchr from 'fetchr'; - -function callbackObserver(observer) { - return (err, res) => { - if (err) { - return observer.error(err); - } - - observer.next(res); - return observer.complete(); - }; -} - -export default function servicesCreator(options) { - const services = new Fetchr(options); - - return { - readService$({ service: resource, params = {} }) { - return Observable.create(observer => - services - .read(resource) - .params(params) - .end(callbackObserver(observer)) - ); - } - }; -} - -// createService$({ service: resource, params, body, config }) { -// return Observable.create(observer => { -// services.create( -// resource, -// params, -// body, -// config, -// callbackObserver(observer) -// ); -// return Subscription.create(() => observer.dispose()); -// }); -// } diff --git a/client/src/redux/createStore.js b/client/src/redux/createStore.js index 33362ac3dd..83614fafeb 100644 --- a/client/src/redux/createStore.js +++ b/client/src/redux/createStore.js @@ -4,26 +4,19 @@ import { createStore as reduxCreateStore, applyMiddleware } from 'redux'; import createSagaMiddleware from 'redux-saga'; import { createEpicMiddleware } from 'redux-observable'; -import servicesCreator from './createServices'; -import { _csrf } from './cookieValues'; - import rootEpic from './rootEpic'; import rootReducer from './rootReducer'; import rootSaga from './rootSaga'; +import { isBrowser } from '../../utils'; -const serviceOptions = { - context: _csrf ? { _csrf } : {}, - xhrPath: '/external/services', - xhrTimeout: 15000 -}; +const clientSide = isBrowser(); const sagaMiddleware = createSagaMiddleware(); const epicMiddleware = createEpicMiddleware({ dependencies: { - window: typeof window !== 'undefined' ? window : {}, - location: typeof window !== 'undefined' ? window.location : {}, - document: typeof window !== 'undefined' ? document : {}, - services: servicesCreator(serviceOptions) + window: clientSide ? window : {}, + location: clientSide ? window.location : {}, + document: clientSide ? document : {} } }); diff --git a/client/src/templates/Challenges/redux/completion-epic.js b/client/src/templates/Challenges/redux/completion-epic.js index 758bf3e8f0..af9e0f6493 100644 --- a/client/src/templates/Challenges/redux/completion-epic.js +++ b/client/src/templates/Challenges/redux/completion-epic.js @@ -67,7 +67,7 @@ function submitModern(type, state) { files }; const update = { - endpoint: '/external/modern-challenge-completed', + endpoint: '/modern-challenge-completed', payload: challengeInfo }; return postChallenge(update, username); @@ -90,7 +90,7 @@ function submitProject(type, state) { } const update = { - endpoint: '/external/project-completed', + endpoint: '/project-completed', payload: challengeInfo }; return postChallenge(update, username).pipe( @@ -110,7 +110,7 @@ function submitBackendChallenge(type, state) { const challengeInfo = { id, solution }; const update = { - endpoint: '/external/backend-challenge-completed', + endpoint: '/backend-challenge-completed', payload: challengeInfo }; return postChallenge(update, username); diff --git a/client/src/templates/Challenges/redux/current-challenge-epic.js b/client/src/templates/Challenges/redux/current-challenge-epic.js index ab59b7888a..1166ae4d2d 100644 --- a/client/src/templates/Challenges/redux/current-challenge-epic.js +++ b/client/src/templates/Challenges/redux/current-challenge-epic.js @@ -18,7 +18,7 @@ function currentChallengeEpic(action$, state$) { filter(({ payload }) => payload !== currentChallengeIdSelector(state$.value)), switchMap(({ payload }) => { const update = { - endpoint: '/external/update-my-current-challenge', + endpoint: '/update-my-current-challenge', payload: { currentChallengeId: payload } diff --git a/client/src/templates/Challenges/utils/postUpdate$.js b/client/src/templates/Challenges/utils/postUpdate$.js index 14d0d1283f..e3199f85d2 100644 --- a/client/src/templates/Challenges/utils/postUpdate$.js +++ b/client/src/templates/Challenges/utils/postUpdate$.js @@ -1,5 +1,6 @@ -import { postJSON$ } from './ajax-stream'; +import { from } from 'rxjs'; +import { post } from '../../../utils/ajax'; export default function postUpdate$({ endpoint, payload }) { - return postJSON$(endpoint, payload); + return from(post(endpoint, payload)); } diff --git a/client/src/utils/ajax.js b/client/src/utils/ajax.js index a435a9f103..9ae3c5efe3 100644 --- a/client/src/utils/ajax.js +++ b/client/src/utils/ajax.js @@ -6,7 +6,7 @@ function get(path) { return axios.get(`${base}${path}`); } -function post(path, body) { +export function post(path, body) { return axios.post(`${base}${path}`, body); }