61 lines
1.3 KiB
TypeScript
61 lines
1.3 KiB
TypeScript
import { createReducer, on } from '@ngrx/store';
|
|
|
|
import { UserInfo } from '@ucap/protocol-sync';
|
|
|
|
import { initialState, adapterBuddy } from './state';
|
|
import {
|
|
buddy2Success,
|
|
delSuccess,
|
|
updateSuccess,
|
|
nicknameSuccess
|
|
} from './actions';
|
|
|
|
export const reducer = createReducer(
|
|
initialState,
|
|
on(buddy2Success, (state, action) => {
|
|
return {
|
|
...state,
|
|
buddies: adapterBuddy.upsertMany(action.buddyList, {
|
|
...state.buddies,
|
|
syncDate: action.syncDate
|
|
})
|
|
};
|
|
}),
|
|
|
|
on(delSuccess, (state, action) => {
|
|
const res = action.res;
|
|
return {
|
|
...state,
|
|
buddies: adapterBuddy.removeMany(res.userSeqs, {
|
|
...state.buddies
|
|
})
|
|
};
|
|
}),
|
|
|
|
on(updateSuccess, (state, action) => {
|
|
const res = action.res;
|
|
const userInfo: UserInfo = {
|
|
...state.buddies.entities[res.seq],
|
|
isFavorit: res.isFavorit
|
|
};
|
|
|
|
return {
|
|
...state,
|
|
buddies: adapterBuddy.upsertOne(userInfo, { ...state.buddies })
|
|
};
|
|
}),
|
|
|
|
on(nicknameSuccess, (state, action) => {
|
|
const res = action.res;
|
|
const userInfo: UserInfo = {
|
|
...state.buddies.entities[res.userSeq],
|
|
nickName: res.nickname
|
|
};
|
|
|
|
return {
|
|
...state,
|
|
buddies: adapterBuddy.upsertOne(userInfo, { ...state.buddies })
|
|
};
|
|
})
|
|
);
|