From f26f015ff487e73336b03c054123ed5a52c74e6f Mon Sep 17 00:00:00 2001 From: Mick Ryan Date: Thu, 18 Jul 2019 13:32:23 -0700 Subject: [PATCH] Fix: Refactor API Refactor eject interceptors to eject all interceptors as to not track the interceptor id. --- src/lib/__tests__/api-test.js | 2 ++ src/lib/api.js | 17 +++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/lib/__tests__/api-test.js b/src/lib/__tests__/api-test.js index f90d4cdf8..d8e39c1ae 100644 --- a/src/lib/__tests__/api-test.js +++ b/src/lib/__tests__/api-test.js @@ -209,6 +209,8 @@ describe('API helper', () => { const responseInterceptor = sinon.stub(); api.addRequestInterceptor(requestInterceptor); + api.addRequestInterceptor(requestInterceptor); + api.addResponseInterceptor(responseInterceptor); api.addResponseInterceptor(responseInterceptor); api.ejectInterceptors(); diff --git a/src/lib/api.js b/src/lib/api.js index dfdabefd9..48484d5b0 100644 --- a/src/lib/api.js +++ b/src/lib/api.js @@ -58,9 +58,6 @@ const handleError = ({ response }) => { const transformTextResponse = (data) => data; class Api { - responseInterceptorId; - requestInterceptorId; - /** * [constructor] * @@ -79,7 +76,7 @@ class Api { */ addResponseInterceptor(responseInterceptor) { if (typeof responseInterceptor === 'function') { - this.responseInterceptorId = this.client.interceptors.response.use(responseInterceptor); + this.client.interceptors.response.use(responseInterceptor); } } @@ -92,7 +89,7 @@ class Api { */ addRequestInterceptor(requestInterceptor) { if (typeof requestInterceptor === 'function') { - this.requestInterceptorId = this.client.interceptors.request.use(requestInterceptor); + this.client.interceptors.request.use(requestInterceptor); } } @@ -103,11 +100,11 @@ class Api { * @return {void} */ ejectInterceptors() { - this.client.interceptors.response.eject(this.responseInterceptorId); - this.client.interceptors.request.eject(this.requestInterceptorId); - - this.requestInterceptorId = null; - this.responseInterceptorId = null; + ['response', 'request'].forEach((interceptorType) => { + this.client.interceptors[interceptorType].handlers.forEach((interceptor, index) => { + this.client.interceptors[interceptorType].eject(index); + }); + }); } /**