mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-16 06:23:03 +00:00
intermediate commit
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
import {
|
||||
RequestActionTypes, RequestAction, RequestConfigureAction,
|
||||
RequestExecuteAction, RequestCompleteAction
|
||||
RequestExecuteAction, RequestCompleteAction, ResetResponseTimestampsAction
|
||||
} from './request.actions';
|
||||
import { RestRequest } from './request.models';
|
||||
import { RestResponse } from '../cache/response.models';
|
||||
|
||||
export class RequestEntry {
|
||||
request: RestRequest;
|
||||
requestPending: boolean;
|
||||
responsePending: boolean;
|
||||
completed: boolean;
|
||||
response: RestResponse
|
||||
}
|
||||
|
||||
export interface RequestState {
|
||||
@@ -32,6 +34,9 @@ export function requestReducer(state = initialState, action: RequestAction): Req
|
||||
case RequestActionTypes.COMPLETE: {
|
||||
return completeRequest(state, action as RequestCompleteAction);
|
||||
}
|
||||
case RequestActionTypes.RESET_TIMESTAMPS: {
|
||||
return resetResponseTimestamps(state, action as ResetResponseTimestampsAction);
|
||||
}
|
||||
|
||||
default: {
|
||||
return state;
|
||||
@@ -45,7 +50,7 @@ function configureRequest(state: RequestState, action: RequestConfigureAction):
|
||||
request: action.payload,
|
||||
requestPending: true,
|
||||
responsePending: false,
|
||||
completed: false
|
||||
completed: false,
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -70,10 +75,25 @@ function executeRequest(state: RequestState, action: RequestExecuteAction): Requ
|
||||
* the new state, with the response added to the request
|
||||
*/
|
||||
function completeRequest(state: RequestState, action: RequestCompleteAction): RequestState {
|
||||
return Object.assign({}, state, {
|
||||
[action.payload]: Object.assign({}, state[action.payload], {
|
||||
const time = new Date().getTime();
|
||||
|
||||
const ob = Object.assign({}, state, {
|
||||
[action.payload.uuid]: Object.assign({}, state[action.payload.uuid], {
|
||||
responsePending: false,
|
||||
completed: true
|
||||
completed: true,
|
||||
response: Object.assign({}, action.payload.response, { timeAdded: time })
|
||||
})
|
||||
});
|
||||
console.log(ob);
|
||||
return ob;
|
||||
}
|
||||
|
||||
function resetResponseTimestamps(state: RequestState, action: ResetResponseTimestampsAction) {
|
||||
const newState = Object.create(null);
|
||||
Object.keys(state).forEach((key) => {
|
||||
newState[key] = Object.assign({}, state[key],
|
||||
{ response: Object.assign({}, state[key].response, { timeAdded: action.payload }) }
|
||||
);
|
||||
});
|
||||
return newState;
|
||||
}
|
||||
|
Reference in New Issue
Block a user