49 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-10-02 18:09:39 +09:00
import { Selector, createSelector } from '@ngrx/store';
import { StatusBulkInfo } from '@ucap-webmessenger/protocol-status';
2019-10-11 16:40:55 +09:00
import { EntityState, createEntityAdapter } from '@ngrx/entity';
export interface StatusBulkInfoState extends EntityState<StatusBulkInfo> {}
2019-10-02 18:09:39 +09:00
export interface State {
2019-10-11 16:40:55 +09:00
statusBulkInfo: StatusBulkInfoState;
2019-10-02 18:09:39 +09:00
}
2019-10-11 16:40:55 +09:00
export const adapterStatusBulkInfo = createEntityAdapter<StatusBulkInfo>({
selectId: statusBulkInfo => statusBulkInfo.userSeq
});
const statusBulkInfoInitialState: StatusBulkInfoState = adapterStatusBulkInfo.getInitialState(
{}
);
2019-10-02 18:09:39 +09:00
export const initialState: State = {
2019-10-11 16:40:55 +09:00
statusBulkInfo: statusBulkInfoInitialState
2019-10-02 18:09:39 +09:00
};
2019-10-11 16:40:55 +09:00
const {
selectAll: ngeSelectAllStatusBulkInfo,
selectEntities: ngeSelectEntitiesStatusBulkInfo,
selectIds: ngeSelectIdsStatusBulkInfo,
selectTotal: ngeSelectTotalStatusBulkInfo
} = adapterStatusBulkInfo.getSelectors();
2019-10-02 18:09:39 +09:00
export function selectors<S>(selector: Selector<any, State>) {
2019-10-11 16:40:55 +09:00
const selectStatusBulkInfo = createSelector(
selector,
(state: State) => state.statusBulkInfo
);
2019-10-02 18:09:39 +09:00
return {
2019-10-11 16:40:55 +09:00
selectAllStatusBulkInfo: createSelector(
selectStatusBulkInfo,
ngeSelectAllStatusBulkInfo
),
selectStatusBulkInfo: (userSeq: number) =>
createSelector(
selectStatusBulkInfo,
ngeSelectEntitiesStatusBulkInfo,
(_, entities) => entities[userSeq]
)
2019-10-02 18:09:39 +09:00
};
}