@@ -4,14 +4,19 @@ import { resourceStatus } from './status.js';
44
55export const initialState = fromJS ( { resources : { } , fetchManyStatus : { } } ) ;
66
7+ const isAbortError = error => error ?. name === 'AbortError' ;
8+
79const reducerFactory = ( actionTypes , id = 'id' ) => ( {
810 [ actionTypes . FETCH_PENDING ] : ( state , { meta } ) =>
911 meta . allowReload && state . getIn ( [ 'resources' , meta [ id ] , 'state' ] ) === resourceStatus . FULFILLED
1012 ? state . setIn ( [ 'resources' , meta [ id ] , 'state' ] , resourceStatus . RELOADING )
1113 : state . setIn ( [ 'resources' , meta [ id ] ] , createRecord ( ) ) ,
1214
1315 [ actionTypes . FETCH_REJECTED ] : ( state , { meta, payload : error } ) =>
14- state . setIn ( [ 'resources' , meta [ id ] ] , createRecord ( { state : resourceStatus . FAILED , error } ) ) ,
16+ state . setIn (
17+ [ 'resources' , meta [ id ] ] ,
18+ createRecord ( { state : isAbortError ( error ) ? resourceStatus . ABORTED : resourceStatus . FAILED , error } )
19+ ) ,
1520
1621 [ actionTypes . FETCH_FULFILLED ] : ( state , { meta, payload : data } ) =>
1722 state . setIn ( [ 'resources' , meta [ id ] ] , createRecord ( { state : resourceStatus . FULFILLED , data } ) ) ,
@@ -34,8 +39,8 @@ const reducerFactory = (actionTypes, id = 'id') => ({
3439 : resourceStatus . PENDING
3540 ) ,
3641
37- [ actionTypes . FETCH_MANY_REJECTED ] : ( state , { meta : { endpoint } } ) =>
38- state . setIn ( [ 'fetchManyStatus' , endpoint ] , resourceStatus . FAILED ) ,
42+ [ actionTypes . FETCH_MANY_REJECTED ] : ( state , { meta : { endpoint } , payload : error } ) =>
43+ state . setIn ( [ 'fetchManyStatus' , endpoint ] , isAbortError ( error ) ? resourceStatus . ABORTED : resourceStatus . FAILED ) ,
3944
4045 [ actionTypes . FETCH_MANY_FULFILLED ] : ( state , { meta : { endpoint } , payload } ) =>
4146 payload
0 commit comments