From 8c3335094a2210f5dce310994aebe76ee8143658 Mon Sep 17 00:00:00 2001 From: Rodrigo Pedroso <> Date: Wed, 19 Jun 2019 15:38:21 -0400 Subject: [PATCH] Redux middleware --- src/js/middleware/index.js | 22 ++++++++++++++++++++++ src/js/store/index.js | 12 +++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/js/middleware/index.js diff --git a/src/js/middleware/index.js b/src/js/middleware/index.js new file mode 100644 index 0000000..d60eeff --- /dev/null +++ b/src/js/middleware/index.js @@ -0,0 +1,22 @@ +import { ADD_ARTICLE } from "../constants/action-types" + +const forbiddenWords = ["spam", "money"] + +export function forbiddenWordsMiddleware({ dispatch }) { + return function(next) { + return function(action) { + // do your stuff + if (action.type === ADD_ARTICLE) { + + const foundWord = forbiddenWords.filter(word => + action.payload.title.includes(word) + ) + + if (foundWord.length) { + return dispatch({ type: "FOUND_BAD_WORD" }) + } + } + return next(action) + } + } +} diff --git a/src/js/store/index.js b/src/js/store/index.js index 4429bf3..e38ab9d 100644 --- a/src/js/store/index.js +++ b/src/js/store/index.js @@ -1,6 +1,12 @@ -import { createStore } from "redux" -import rootReducer from "../reducers/index" +import { createStore, applyMiddleware, compose } from 'redux' +import rootReducer from '../reducers/index' +import { forbiddenWordsMiddleware } from '../middleware' -const store = createStore(rootReducer) +const storeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose + +const store = createStore( + rootReducer, + storeEnhancers(applyMiddleware(forbiddenWordsMiddleware)) +) export default store