75 lines
2.1 KiB
TypeScript
Raw Normal View History

2019-10-02 18:09:39 +09:00
import { Selector, createSelector } from '@ngrx/store';
2020-01-10 16:49:53 +09:00
import { StatusBulkInfo, StatusInfo } from '@ucap-webmessenger/protocol-status';
2019-10-11 16:40:55 +09:00
import { EntityState, createEntityAdapter } from '@ngrx/entity';
2020-01-10 16:49:53 +09:00
import { StatusCode } from '@ucap-webmessenger/core';
2019-10-11 16:40:55 +09:00
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;
2020-01-10 16:49:53 +09:00
myStatus: StatusInfo;
myIdleCheckTime: number;
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 = {
2020-01-10 16:49:53 +09:00
statusBulkInfo: statusBulkInfoInitialState,
myStatus: {
userSeq: -1,
pcStatus: StatusCode.OnLine,
phoneStatus: StatusCode.Offline,
mobileStatus: StatusCode.Offline,
conferenceStatus: StatusCode.Offline,
statusMessage: '',
mobileConferenceStatus: StatusCode.Offline,
imessengerStatus: StatusCode.Offline
},
myIdleCheckTime: 10
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
),
2019-10-11 18:24:57 +09:00
selectEntitiesStatusBulkInfo: createSelector(
selectStatusBulkInfo,
ngeSelectEntitiesStatusBulkInfo
),
2019-10-11 16:40:55 +09:00
selectStatusBulkInfo: (userSeq: number) =>
createSelector(
selectStatusBulkInfo,
ngeSelectEntitiesStatusBulkInfo,
2019-10-11 18:24:57 +09:00
(_, entities) => (!!entities ? entities[userSeq] : undefined)
2020-01-10 16:49:53 +09:00
),
selectedMyStatus: createSelector(
selector,
(state: State) => state.myStatus
),
selectedMyIdleCheckTime: createSelector(
selector,
(state: State) => state.myIdleCheckTime
)
2019-10-02 18:09:39 +09:00
};
}