diff --git a/package-lock.json b/package-lock.json index 1658955..7f4a425 100644 --- a/package-lock.json +++ b/package-lock.json @@ -622,9 +622,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.16.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.0.tgz", - "integrity": "sha512-vDxceJcoZhIVh67S568bm1UGZO0DX0hpplJZxzeXMKwIPLn190ec5RRxQ69BKhX44SUGIxxgMdDY557lGLKprQ==", + "version": "20.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz", + "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" diff --git a/src/events/character/Create.ts b/src/events/character/Create.ts index e9d17a4..bfc9924 100644 --- a/src/events/character/Create.ts +++ b/src/events/character/Create.ts @@ -29,8 +29,8 @@ export default function (socket: TSocket, io: Server) { const character: Character = await prisma.character.create({ data: { name: data.name, - userId: user_id - // characterTypeId: 1 // @TODO set to chosen character type + userId: user_id, + characterTypeId: 1 // @TODO set to chosen character type } }) diff --git a/src/events/chat/SendMessage.ts b/src/events/chat/SendMessage.ts new file mode 100644 index 0000000..dc0bf4f --- /dev/null +++ b/src/events/chat/SendMessage.ts @@ -0,0 +1,42 @@ +import { Server } from 'socket.io' +import { TSocket } from '../../utilities/Types' +import CharacterRepository from '../../repositories/CharacterRepository' +import ZoneRepository from '../../repositories/ZoneRepository' + +type TypePayload = { + message: string +} + +export default function (socket: TSocket, io: Server) { + socket.on('chat:send_message', async (data: TypePayload, callback: (response: boolean) => void) => { + console.log(`---User ${socket.character?.id} has sent a message via chat.`) + + if (!data.message) { + console.log(`---Message not provided.`) + return + } + + try { + const character = await CharacterRepository.getByUserAndId(socket.user?.id as number, socket.character?.id as number) + if (!character) { + console.log(`---Character not found.`) + return + } + + const zone = await ZoneRepository.getById(character.zoneId) + if (!zone) { + console.log(`---Zone not found.`) + return + } + + // send over zone and characters to socket + callback(true) + io.to(zone.id.toString()).emit('chat:message', { + character: character, + message: data.message + }) + } catch (error: any) { + console.log(`---Error sending message: ${error.message}`) + } + }) +}