From dbaf0e3f51b31c3b45a1acccc9cc03485a2b8f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Svrc=CC=8Cek?= Date: Wed, 10 Aug 2016 14:41:17 +0200 Subject: [PATCH] removed enhanced getState --- CHANGELOG.md | 4 +++ package.json | 2 +- src/middleware.js | 81 +++++++++++++++++++--------------------------- test/middleware.js | 2 -- 4 files changed, 39 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57635b6..6508c0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 2.0.0 ( Aug 10, 2016 ) +- changes to support axios@0.13 +- removed enhanced getState function as first interceptor argument + ## 1.3.0 ( Jun 14, 2016 ) - added warning to not use first interceptor argument as `getState` function - added `dispatch` and `action` to first interceptor argument - [#26](https://github.com/svrcekmichal/redux-axios-middleware/pull/26) diff --git a/package.json b/package.json index d7e73ec..094859e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redux-axios-middleware", - "version": "1.3.0", + "version": "2.0.0", "description": "Redux middleware for fetching data with axios HTTP client", "main": "lib/index.js", "scripts": { diff --git a/src/middleware.js b/src/middleware.js index 0d92278..503d44d 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -21,54 +21,41 @@ function bindInterceptors(client, getState, middlewareInterceptors = {}, clientI export const multiClientMiddleware = (clients, customMiddlewareOptions) => { const middlewareOptions = { ...defaultOptions, ...customMiddlewareOptions }; const setupedClients = {}; - return function ({ getState, dispatch }) { - const enhancedGetState = function () { - console.log(` - Warning, getState as function in interceptor will be removed in version 2 of middleware. - Stop: interceptor(getState,config) { ... } - Do: interceptor({getState}, config) { ... } - `); - return getState(); - }; - enhancedGetState.getState = getState; - enhancedGetState.dispatch = dispatch; - return next => action => { - if (!middlewareOptions.isAxiosRequest(action)) { - return next(action); + return ({ getState, dispatch }) => next => action => { + if (!middlewareOptions.isAxiosRequest(action)) { + return next(action); + } + const clientName = middlewareOptions.getClientName(action) || middlewareOptions.defaultClientName; + if (!clients[clientName]) { + throw new Error(`Client with name "${clientName}" has not been defined in middleware`); + } + if (!setupedClients[clientName]) { + const clientOptions = { ...middlewareOptions, ...clients[clientName].options }; + if (clientOptions.interceptors) { + bindInterceptors(clients[clientName].client, { getState, dispatch, action }, + middlewareOptions.interceptors, clients[clientName].options.interceptors); } - const clientName = middlewareOptions.getClientName(action) || middlewareOptions.defaultClientName; - if (!clients[clientName]) { - throw new Error(`Client with name "${clientName}" has not been defined in middleware`); - } - if (!setupedClients[clientName]) { - const clientOptions = { ...middlewareOptions, ...clients[clientName].options }; - if (clientOptions.interceptors) { - enhancedGetState.action = action; - bindInterceptors(clients[clientName].client, enhancedGetState, - middlewareOptions.interceptors, clients[clientName].options.interceptors); - } - setupedClients[clientName] = { - client: clients[clientName].client, - options: clientOptions - }; - } - const setupedClient = setupedClients[clientName]; - const actionOptions = { ...setupedClient.options, ...setupedClient.options.getRequestOptions(action) }; - const [REQUEST] = getActionTypes(action, actionOptions); - next({ ...action, type: REQUEST }); - return setupedClient.client.request(actionOptions.getRequestConfig(action)) - .then( - (response) => { - const newAction = actionOptions.onSuccess({ action, next, response, getState, dispatch }, actionOptions); - actionOptions.onComplete({ action: newAction, next, getState, dispatch }, actionOptions); - return newAction; - }, - (error) => { - const newAction = actionOptions.onError({ action, next, error, getState, dispatch }, actionOptions); - actionOptions.onComplete({ action: newAction, next, getState, dispatch }, actionOptions); - return actionOptions.returnRejectedPromiseOnError ? Promise.reject(newAction) : newAction; - }); - }; + setupedClients[clientName] = { + client: clients[clientName].client, + options: clientOptions + }; + } + const setupedClient = setupedClients[clientName]; + const actionOptions = { ...setupedClient.options, ...setupedClient.options.getRequestOptions(action) }; + const [REQUEST] = getActionTypes(action, actionOptions); + next({ ...action, type: REQUEST }); + return setupedClient.client.request(actionOptions.getRequestConfig(action)) + .then( + (response) => { + const newAction = actionOptions.onSuccess({ action, next, response, getState, dispatch }, actionOptions); + actionOptions.onComplete({ action: newAction, next, getState, dispatch }, actionOptions); + return newAction; + }, + (error) => { + const newAction = actionOptions.onError({ action, next, error, getState, dispatch }, actionOptions); + actionOptions.onComplete({ action: newAction, next, getState, dispatch }, actionOptions); + return actionOptions.returnRejectedPromiseOnError ? Promise.reject(newAction) : newAction; + }); }; }; diff --git a/test/middleware.js b/test/middleware.js index 8b2b260..a6be12c 100644 --- a/test/middleware.js +++ b/test/middleware.js @@ -5,9 +5,7 @@ import MockAdapter from 'axios-mock-adapter'; import middleware from './../src/middleware'; -const BASE_URL = 'mockapi'; const client = axios.create({ - baseURL: BASE_URL, responseType: 'json' });