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
|
|
|
)
|
|
|
|
};
|
|
|
|
}
|