intermediate commit

This commit is contained in:
lotte
2018-10-17 13:18:01 +02:00
parent b1c6d68cc5
commit 2330e96158
75 changed files with 387 additions and 1067 deletions

View File

@@ -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;
}