import { Server } from 'socket.io' import { TSocket } from '#utilities/types' import { Object } from '@prisma/client' import ObjectRepository from '#repositories/objectRepository' import characterRepository from '#repositories/characterRepository' interface IPayload {} export default class ObjectListEvent { constructor( private readonly io: Server, private readonly socket: TSocket ) {} public listen(): void { this.socket.on('gm:object:list', this.handleObjectList.bind(this)) } private async handleObjectList(data: IPayload, callback: (response: Object[]) => void): Promise { const character = await characterRepository.getById(this.socket.characterId as number) if (!character) return callback([]) if (character.role !== 'gm') { return callback([]) } // get all objects const objects = await ObjectRepository.getAll() callback(objects) } }