diff --git a/src/middleware.js b/src/middleware.js index b1b8631..4fdde88 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -39,14 +39,15 @@ export const multiClientMiddleware = (clients, customMiddlewareOptions) => { if (!setupedClients[clientName]) { const clientOptions = { ...middlewareOptions, ...clients[clientName].options }; - if (clientOptions.interceptors) { - const middlewareInterceptors = middlewareOptions.interceptors; - const clientInterceptors = clients[clientName].options && clients[clientName].options.interceptors; - const injectToInterceptor = { getState, dispatch, getSourceAction }; - bindInterceptors(clients[clientName].client, injectToInterceptor, middlewareInterceptors, clientInterceptors); + let actionOptions = action.payload.options || {}; + var middlewareInterceptors = middlewareOptions.interceptors; + var clientInterceptors = clients[clientName].options && clients[clientName].options.interceptors; + var actionInterceptors = actionOptions.interceptors || {}; + clientInterceptors = Object.assign(clientInterceptors, actionInterceptors); + var injectToInterceptor = { getState: getState, dispatch: dispatch, getSourceAction: getSourceAction }; + bindInterceptors(clients[clientName].client, injectToInterceptor, middlewareInterceptors, clientInterceptors); } - setupedClients[clientName] = { client: clients[clientName].client, options: clientOptions @@ -77,8 +78,8 @@ export const multiClientMiddleware = (clients, customMiddlewareOptions) => { }; }; -export default (client, customMiddlewareOptions, customClientOptions) => { +export default (clients, customMiddlewareOptions, customClientOptions) => { const middlewareOptions = { ...defaultOptions, ...customMiddlewareOptions }; const options = customClientOptions || {}; - return multiClientMiddleware({ [middlewareOptions.defaultClientName]: { client, options } }, middlewareOptions); + return multiClientMiddleware(clients, middlewareOptions); };