import { Server } from 'socket.io' import { TSocket } from '../../../../utilities/types' import { Sprite } from '@prisma/client' import SpriteRepository from '../../../../repositories/spriteRepository' import CharacterManager from '../../../../managers/characterManager' import characterRepository from '../../../../repositories/characterRepository' interface IPayload {} export default class SpriteListEvent { constructor( private readonly io: Server, private readonly socket: TSocket ) {} public listen(): void { this.socket.on('gm:sprite:list', this.handleSpriteList.bind(this)) } private async handleSpriteList(data: any, callback: (response: Sprite[]) => void): Promise { const character = await characterRepository.getById(this.socket.characterId as number) if (!character) return callback([]) if (character.role !== 'gm') { return callback([]) } // get all sprites const sprites = await SpriteRepository.getAll() callback(sprites) } }