@nogard7491/wsc
Version:
Simple to use, blazing fast and thoroughly tested websocket client.
102 lines (90 loc) • 3.5 kB
JavaScript
;
import Repository from './Repository';
import RepositoryElement from './RepositoryElement';
import EventHandler from './EventHandler';
class EventHandlerRepository extends Repository {
/**
* Создаёт экземпляр класса.
*/
constructor() {
super();
}
/**
* Добавляет элемент в хранилище.
*
* @param {EventHandler} eventHandler элемент
* @return {number} идентификатор элемента
*/
add(eventHandler) {
return super.add(eventHandler);
}
/**
* Получает элементы из хранилища по типу события.
*
* @param {string} eventType тип события
* @return {Array} элементы хранилища
*/
getByEventType(eventType) {
return this.getAll().filter(eventHandler => eventHandler.eventType === eventType);
}
/**
* Получает элементы из хранилища по обработчику события.
*
* @param {Function} handler обработчик события
* @return {Array} элементы хранилища
*/
getByHandler(handler) {
return this.getAll().filter(eventHandler => eventHandler.handler.toString() === handler.toString());
}
/**
* Проверяет наличие элементов в хранилище по типу события.
*
* @param {string} eventType тип события
* @return {boolean} результат проверки
*/
hasByEventType(eventType) {
return Boolean(this.getByEventType(eventType).length);
}
/**
* Проверяет наличие элементов в хранилище по обработчику события.
*
* @param {Function} handler обработчик события
* @return {boolean} результат проверки
*/
hasByHandler(handler) {
return Boolean(this.getByHandler(handler).length);
}
/**
* Удаляет элементы из хранилища по типу события.
*
* @param {string} eventType тип события
* @return {boolean} результат выполнения операции
*/
deleteByEventType(eventType) {
let result = false;
this._repository.forEach(repositoryElement => {
let eventHandler = repositoryElement.value;
if (eventHandler.eventType === eventType && this.deleteById(repositoryElement.id)) {
result = true;
}
});
return result;
}
/**
* Удаляет элементы из хранилища по обработчику события.
*
* @param {Function} handler обработчик события
* @return {boolean} результат выполнения операции
*/
deleteByHandler(handler) {
let result = false;
this._repository.forEach(repositoryElement => {
let eventHandler = repositoryElement.value;
if (eventHandler.handler.toString() === handler.toString() && this.deleteById(repositoryElement.id)) {
result = true;
}
});
return result;
}
}
export default EventHandlerRepository;