@aszu/lazy-network
Advanced tools
Comparing version 0.4.2-3 to 0.4.2-4
@@ -36,2 +36,4 @@ "use strict"; | ||
var FUNCTIONAL_KEY = Symbol('FUNCTIONAL'); | ||
var StatusResponseInterceptor = /*#__PURE__*/function (_ResponseListener) { | ||
@@ -54,5 +56,18 @@ (0, _inherits2["default"])(StatusResponseInterceptor, _ResponseListener); | ||
value: function addStatusHook(status, fct) { | ||
var statusHandlers = this.handlers[status] || []; | ||
var newStatusHandlers = [].concat((0, _toConsumableArray2["default"])(statusHandlers), [fct]); | ||
this.handlers = _objectSpread(_objectSpread({}, this.handlers), {}, (0, _defineProperty2["default"])({}, status, newStatusHandlers)); | ||
var _this2 = this; | ||
var statusIsFunction = typeof status === 'function'; | ||
var statusToUse = statusIsFunction ? FUNCTIONAL_KEY : status; | ||
var fctToUse = statusIsFunction ? { | ||
check: status, | ||
action: fct | ||
} : fct; | ||
var statusHandlers = this.handlers[statusToUse] || []; | ||
var newStatusHandlers = [].concat((0, _toConsumableArray2["default"])(statusHandlers), [fctToUse]); | ||
this.handlers = _objectSpread(_objectSpread({}, this.handlers), {}, (0, _defineProperty2["default"])({}, statusToUse, newStatusHandlers)); | ||
return function () { | ||
_this2.handlers[statusToUse] = _this2.handlers[statusToUse].filter(function (installedFct) { | ||
return installedFct !== fctToUse; | ||
}); | ||
}; | ||
} | ||
@@ -70,3 +85,6 @@ }, { | ||
var status = error.response.status; | ||
var handlersToBeExecuted = this.handlers[status]; | ||
var functionalHandlersToExecute = this.handlers[FUNCTIONAL_KEY].filter(function (handler) { | ||
return handler.check(status); | ||
}); | ||
var handlersToBeExecuted = [].concat((0, _toConsumableArray2["default"])(this.handlers[status]), (0, _toConsumableArray2["default"])(functionalHandlersToExecute)); | ||
@@ -79,3 +97,3 @@ if (handlersToBeExecuted) { | ||
} catch (e) { | ||
console.error("StatusResponseInterceptor error: ", e); | ||
console.error('StatusResponseInterceptor error: ', e); | ||
} | ||
@@ -82,0 +100,0 @@ |
{ | ||
"name": "@aszu/lazy-network", | ||
"version": "0.4.2-3", | ||
"version": "0.4.2-4", | ||
"description": "The network layer wrapper, by lazy people for lazy people.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
import ResponseListener from './ResponseListener' | ||
const FUNCTIONAL_KEY = Symbol('FUNCTIONAL') | ||
class StatusResponseInterceptor extends ResponseListener { | ||
constructor() { | ||
constructor () { | ||
super() | ||
@@ -8,7 +11,14 @@ this.handlers = {} | ||
addStatusHook(status, fct) { | ||
const statusHandlers = this.handlers[status] || [] | ||
const newStatusHandlers = [ ...statusHandlers, fct ] | ||
addStatusHook (status, fct) { | ||
const statusIsFunction = typeof status === 'function' | ||
const statusToUse = statusIsFunction ? FUNCTIONAL_KEY : status | ||
const fctToUse = statusIsFunction ? { check: status, action: fct } : fct | ||
const statusHandlers = this.handlers[statusToUse] || [] | ||
const newStatusHandlers = [...statusHandlers, fctToUse] | ||
this.handlers = {...this.handlers, [status]: newStatusHandlers } | ||
this.handlers = { ...this.handlers, [statusToUse]: newStatusHandlers } | ||
return () => { | ||
this.handlers[statusToUse] = this.handlers[statusToUse].filter(installedFct => installedFct !== fctToUse) | ||
} | ||
} | ||
@@ -20,15 +30,18 @@ | ||
const handlersToBeExecuted = this.handlers[status] | ||
const functionalHandlersToExecute = this.handlers[FUNCTIONAL_KEY].filter( | ||
handler => handler.check(status) | ||
) | ||
const handlersToBeExecuted = [...this.handlers[status], ...functionalHandlersToExecute] | ||
if (handlersToBeExecuted) { | ||
handlersToBeExecuted.forEach(fct => fct(error, ...additionalParams)) | ||
} | ||
} catch(e) { | ||
console.error("StatusResponseInterceptor error: ", e) | ||
} catch (e) { | ||
console.error('StatusResponseInterceptor error: ', e) | ||
} | ||
super.onError(error, ...additionalParams) | ||
} | ||
} | ||
export default StatusResponseInterceptor | ||
export default StatusResponseInterceptor |
50070
1130