60 lines
1.4 KiB
TypeScript
Raw Normal View History

2019-09-19 10:40:16 +09:00
import { Type } from '@angular/core';
import { Action, combineReducers, Selector, createSelector } from '@ngrx/store';
2019-09-24 14:53:22 +09:00
import * as InitStore from './init';
2019-09-25 17:26:19 +09:00
import * as OptionStore from './option';
import * as QueryStore from './query';
2019-09-19 10:40:16 +09:00
import * as VersionInfoStore from './version-info';
export interface State {
2019-09-24 14:53:22 +09:00
init: InitStore.State;
2019-09-25 17:26:19 +09:00
option: OptionStore.State;
query: QueryStore.State;
2019-09-19 10:40:16 +09:00
versionInfo: VersionInfoStore.State;
}
2019-09-25 17:26:19 +09:00
export const effects: Type<any>[] = [
InitStore.Effects,
OptionStore.Effects,
QueryStore.Effects,
VersionInfoStore.Effects
];
2019-09-19 10:40:16 +09:00
export function reducers(state: State | undefined, action: Action) {
return combineReducers({
2019-09-24 14:53:22 +09:00
init: InitStore.reducer,
2019-09-25 17:26:19 +09:00
option: OptionStore.reducer,
query: QueryStore.reducer,
2019-09-19 11:22:49 +09:00
versionInfo: VersionInfoStore.reducer
2019-09-19 10:40:16 +09:00
})(state, action);
}
export function selectors<S>(selector: Selector<any, State>) {
return {
2019-09-24 14:53:22 +09:00
InitSelector: InitStore.selectors(
createSelector(
selector,
(state: State) => state.init
)
),
2019-09-25 17:26:19 +09:00
OptionSelector: OptionStore.selectors(
createSelector(
selector,
(state: State) => state.option
)
),
QuerySelector: QueryStore.selectors(
createSelector(
selector,
(state: State) => state.query
)
),
2019-09-19 10:40:16 +09:00
VersionInfoSelector: VersionInfoStore.selectors(
createSelector(
selector,
(state: State) => state.versionInfo
)
)
};
}