import { BaseEvent } from '#application/base/baseEvent' import { Sprite } from '#entities/sprite' import SpriteRepository from '#repositories/spriteRepository' interface IPayload {} export default class SpriteListEvent extends BaseEvent { public listen(): void { this.socket.on('gm:sprite:list', this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Sprite[]) => void): Promise { try { if (!(await this.isCharacterGM())) return // Get all sprites const spriteRepository = new SpriteRepository() const sprites = await spriteRepository.getAll() await spriteRepository.getEntityManager().populate(sprites, ['spriteActions']) return callback(sprites) } catch (error) { this.logger.error('gm:sprite:list error', error) return callback([]) } } }