import { USERS_TYPING } from '../actions/actionsTypes';
import { type TApplicationActions } from '../definitions';

export type IUsersTyping = string[];

export const initialState: IUsersTyping = [];

export default function usersTyping(state = initialState, action: TApplicationActions): IUsersTyping {
	switch (action.type) {
		case USERS_TYPING.ADD:
			if (state.findIndex(item => item === action.username) === -1) {
				return [...state, action.username];
			}
			return state;
		case USERS_TYPING.REMOVE:
			return state.filter(item => item !== action.username);
		case USERS_TYPING.CLEAR:
			return initialState;
		default:
			return state;
	}
}
