Files
dspace-angular/src/app/core/data/request.actions.ts

115 lines
2.5 KiB
TypeScript

import { Action } from '@ngrx/store';
import { type } from '../../shared/ngrx/type';
import { RestRequest } from './request.models';
import { RestResponse } from '../cache/response.models';
/**
* The list of RequestAction type definitions
*/
export const RequestActionTypes = {
CONFIGURE: type('dspace/core/data/request/CONFIGURE'),
EXECUTE: type('dspace/core/data/request/EXECUTE'),
COMPLETE: type('dspace/core/data/request/COMPLETE'),
RESET_TIMESTAMPS: type('dspace/core/data/request/RESET_TIMESTAMPS'),
REMOVE: type('dspace/core/data/request/REMOVE')
};
/* tslint:disable:max-classes-per-file */
export class RequestConfigureAction implements Action {
type = RequestActionTypes.CONFIGURE;
payload: RestRequest;
constructor(
request: RestRequest
) {
this.payload = request;
}
}
export class RequestExecuteAction implements Action {
type = RequestActionTypes.EXECUTE;
payload: string;
/**
* Create a new RequestExecuteAction
*
* @param uuid
* the request's uuid
*/
constructor(uuid: string) {
this.payload = uuid
}
}
/**
* An ngrx action to indicate a response was returned
*/
export class RequestCompleteAction implements Action {
type = RequestActionTypes.COMPLETE;
payload: {
uuid: string,
response: RestResponse
};
/**
* Create a new RequestCompleteAction
*
* @param uuid
* the request's uuid
*/
constructor(uuid: string, response: RestResponse) {
this.payload = {
uuid,
response
};
}
}
/**
* An ngrx action to reset the timeAdded property of all responses in the cached objects
*/
export class ResetResponseTimestampsAction implements Action {
type = RequestActionTypes.RESET_TIMESTAMPS;
payload: number;
/**
* Create a new ResetResponseTimestampsAction
*
* @param newTimestamp
* the new timeAdded all objects should get
*/
constructor(newTimestamp: number) {
this.payload = newTimestamp;
}
}
/**
* An ngrx action to remove a cached request
*/
export class RequestRemoveAction implements Action {
type = RequestActionTypes.REMOVE;
uuid: string;
/**
* Create a new RequestRemoveAction
*
* @param uuid
* the request's uuid
*/
constructor(uuid: string) {
this.uuid = uuid
}
}
/* tslint:enable:max-classes-per-file */
/**
* A type to encompass all RequestActions
*/
export type RequestAction
= RequestConfigureAction
| RequestExecuteAction
| RequestCompleteAction
| ResetResponseTimestampsAction
| RequestRemoveAction;