73 lines
1.6 KiB
TypeScript
Raw Normal View History

2019-09-25 17:26:19 +09:00
import { Selector, createSelector } from '@ngrx/store';
2019-09-25 18:08:50 +09:00
import { UserInfo, GroupDetailData } from '@ucap-webmessenger/protocol-sync';
2019-10-02 15:49:25 +09:00
import {
RoomInfo,
UserInfoShort,
UserInfo as RoomUserInfo
} from '@ucap-webmessenger/protocol-room';
2019-09-25 17:26:19 +09:00
export interface State {
buddyInfoList: UserInfo[];
buddy2SyncDate: string;
2019-09-25 18:08:50 +09:00
groupList: GroupDetailData[];
group2SyncDate: string;
2019-10-02 15:49:25 +09:00
roomList: RoomInfo[];
roomUserInfoMap: {
[param: string]: {
userInfoShortList: UserInfoShort[];
userInfoList: RoomUserInfo[];
};
};
roomSyncDate: string;
2019-09-25 17:26:19 +09:00
}
export const initialState: State = {
buddyInfoList: [],
2019-09-25 18:08:50 +09:00
buddy2SyncDate: '',
groupList: [],
2019-10-02 15:49:25 +09:00
group2SyncDate: '',
roomList: [],
roomUserInfoMap: {},
roomSyncDate: ''
2019-09-25 17:26:19 +09:00
};
export function selectors<S>(selector: Selector<any, State>) {
return {
buddyInfoList: createSelector(
selector,
(state: State) => state.buddyInfoList
2019-09-25 18:08:50 +09:00
),
buddy2SyncDate: createSelector(
selector,
(state: State) => state.buddy2SyncDate
),
groupList: createSelector(
selector,
(state: State) => state.groupList
),
group2SyncDate: createSelector(
selector,
(state: State) => state.group2SyncDate
2019-09-27 12:53:21 +09:00
),
groupListAndBuddyList: createSelector(
selector,
(state: State) => {
return {
groupList: state.groupList,
buddyList: state.buddyInfoList
};
}
2019-10-02 15:49:25 +09:00
),
roomList: createSelector(
selector,
(state: State) => state.roomList
),
roomSyncDate: createSelector(
selector,
(state: State) => state.roomSyncDate
2019-09-25 17:26:19 +09:00
)
};
}