import { Selector, createSelector } from '@ngrx/store'; import { EntityState, createEntityAdapter } from '@ngrx/entity'; import { UserInfo } from '@ucap/protocol-sync'; export interface BuddyState extends EntityState { syncDate: string; } export const adapterBuddy = createEntityAdapter({ 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(selector: Selector) { const selectBuddies = createSelector( selector, (state: State) => state.buddies ); return { buddies: createSelector(selectBuddies, selectAllForBuddy), buddySyncDate: createSelector( selectBuddies, buddyState => buddyState.syncDate ) }; }