45 lines
1.1 KiB
TypeScript
Raw Normal View History

2020-03-27 17:39:01 +09:00
import { Selector, createSelector } from '@ngrx/store';
import { EntityState, createEntityAdapter } from '@ngrx/entity';
import { UserInfo } from '@ucap/protocol-sync';
export interface BuddyState extends EntityState<UserInfo> {
syncDate: string;
}
export const adapterBuddy = createEntityAdapter<UserInfo>({
selectId: userInfo => userInfo.seq
});
export interface State {
buddies: BuddyState;
}
const buddyInitialState: BuddyState = adapterBuddy.getInitialState({
syncDate: ''
});
export const initialState: State = {
buddies: buddyInitialState
};
const {
selectAll: selectAllForBuddy,
selectEntities: selectEntitiesForBuddy,
selectIds: selectIdsForBuddy,
selectTotal: selectTotalForBuddy
} = adapterBuddy.getSelectors();
export function selectors<S>(selector: Selector<any, State>) {
const selectBuddies = createSelector(
selector,
(state: State) => state.buddies
);
return {
buddies: createSelector(selectBuddies, selectAllForBuddy),
buddySyncDate: createSelector(
selectBuddies,
buddyState => buddyState.syncDate
)
};
}