import { Action } from '@ngrx/store'; import { type } from '../../shared/ngrx/type'; import { RestRequestMethod } from '../data/rest-request-method'; /** * The list of ServerSyncBufferAction type definitions */ export const ServerSyncBufferActionTypes = { ADD: type('dspace/core/cache/syncbuffer/ADD'), COMMIT: type('dspace/core/cache/syncbuffer/COMMIT'), EMPTY: type('dspace/core/cache/syncbuffer/EMPTY'), }; /* tslint:disable:max-classes-per-file */ /** * An ngrx action to add a new cached object to the server sync buffer */ export class AddToSSBAction implements Action { type = ServerSyncBufferActionTypes.ADD; payload: { href: string, method: RestRequestMethod }; /** * Create a new AddToSSBAction * * @param href * the unique href of the cached object entry that should be updated */ constructor(href: string, method: RestRequestMethod) { this.payload = { href, method: method }; } } /** * An ngrx action to commit everything (for a certain method, when specified) in the ServerSyncBuffer to the server */ export class CommitSSBAction implements Action { type = ServerSyncBufferActionTypes.COMMIT; payload?: RestRequestMethod; /** * Create a new CommitSSBAction * * @param method * an optional method for which the ServerSyncBuffer should send its entries to the server */ constructor(method?: RestRequestMethod) { this.payload = method; } } /** * An ngrx action to remove everything (for a certain method, when specified) from the ServerSyncBuffer to the server */ export class EmptySSBAction implements Action { type = ServerSyncBufferActionTypes.EMPTY; payload?: RestRequestMethod; /** * Create a new EmptySSBAction * * @param method * an optional method for which the ServerSyncBuffer should remove its entries * if this parameter is omitted, the buffer will be emptied as a whole */ constructor(method?: RestRequestMethod) { this.payload = method; } } /* tslint:enable:max-classes-per-file */ /** * A type to encompass all ServerSyncBufferActions */ export type ServerSyncBufferAction = AddToSSBAction | CommitSSBAction | EmptySSBAction