first-npm-package-nicule
Version:
This isi first npm package
38 lines (33 loc) • 1.22 kB
text/typescript
import { Action, ActionReducerMap } from '@ngrx/store';
import { HypermediaActions, HypermediaActionTypes, ReceivedHypermedia } from '../actions';
import { Hypermedia } from 'first-npm-package-nicule/core';
export const hypermediaReducers: ActionReducerMap<HypermediaState, HypermediaActions> = {
hypermedia: hypermediaReducer
};
export interface HypermediaState {
hypermedia: HypermediaScopePathMap;
}
export interface HypermediaScopePathMap {
[scope: string]: {
[path: string]: {
data: Hypermedia
download?: number,
upload?: number
}
};
}
export function hypermediaReducer(state: HypermediaScopePathMap = {}, action: HypermediaActions): HypermediaScopePathMap {
switch (action.type) {
case HypermediaActionTypes.RECEIVED_HYPERMEDIA:
return {
...state,
[action.payload.scope]: {
...state[action.payload.scope],
[action.payload.path]: {
data: (action as ReceivedHypermedia).payload.hypermedia
}
}
};
default: return state;
}
}