Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
22 lines
717 B
Plaintext
22 lines
717 B
Plaintext
'use strict'
|
|
|
|
const RedirectHandler = require('../handler/redirect-handler')
|
|
|
|
function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections } = {}) {
|
|
return (dispatch) => {
|
|
return function Intercept (opts, handler) {
|
|
const { maxRedirections = defaultMaxRedirections, ...rest } = opts
|
|
|
|
if (maxRedirections == null || maxRedirections === 0) {
|
|
return dispatch(opts, handler)
|
|
}
|
|
|
|
const dispatchOpts = { ...rest } // Stop sub dispatcher from also redirecting.
|
|
const redirectHandler = new RedirectHandler(dispatch, maxRedirections, dispatchOpts, handler)
|
|
return dispatch(dispatchOpts, redirectHandler)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = createRedirectInterceptor
|