verdnatura-chat/app/reducers/selectedUsers.ts

46 lines
979 B
TypeScript

import { TApplicationActions } from '../definitions';
import { SELECTED_USERS } from '../actions/actionsTypes';
export interface ISelectedUser {
_id: string;
name: string;
fname: string;
search?: boolean;
// username is used when is from searching
username?: string;
}
export interface ISelectedUsers {
users: ISelectedUser[];
loading: boolean;
}
export const initialState: ISelectedUsers = {
users: [],
loading: false
};
export default function (state = initialState, action: TApplicationActions): ISelectedUsers {
switch (action.type) {
case SELECTED_USERS.ADD_USER:
return {
...state,
users: state.users.concat(action.user)
};
case SELECTED_USERS.REMOVE_USER:
return {
...state,
users: state.users.filter(item => item.name !== action.user.name)
};
case SELECTED_USERS.SET_LOADING:
return {
...state,
loading: action.loading
};
case SELECTED_USERS.RESET:
return initialState;
default:
return state;
}
}