forked from noxious/server
Added online column to user and char. models, updated send chat message event to new format, removed unused code, fixed typo, replaced console.log()'s with logger
This commit is contained in:
@ -3,31 +3,52 @@ import { TSocket } from '../../utilities/types'
|
||||
import CharacterRepository from '../../repositories/characterRepository'
|
||||
import ZoneRepository from '../../repositories/zoneRepository'
|
||||
import { isCommand } from '../../utilities/chat'
|
||||
import logger from '../../utilities/logger'
|
||||
|
||||
type TypePayload = {
|
||||
message: string
|
||||
}
|
||||
|
||||
export default function (socket: TSocket, io: Server) {
|
||||
socket.on('chat:send_message', async (data: TypePayload, callback: (response: boolean) => void) => {
|
||||
try {
|
||||
if (!data.message) return
|
||||
if (isCommand(data.message)) return
|
||||
export default class ChatMessageEvent {
|
||||
constructor(
|
||||
private readonly io: Server,
|
||||
private readonly socket: TSocket
|
||||
) {}
|
||||
|
||||
const character = await CharacterRepository.getByUserAndId(socket.user?.id as number, socket.character?.id as number)
|
||||
if (!character) return
|
||||
public listen(): void {
|
||||
this.socket.on('chat:send_message', this.handleChatMessage.bind(this))
|
||||
}
|
||||
|
||||
private async handleChatMessage(data: TypePayload, callback: (response: boolean) => void): Promise<void> {
|
||||
try {
|
||||
if (!data.message || isCommand(data.message)) {
|
||||
callback(false)
|
||||
return
|
||||
}
|
||||
|
||||
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.character?.id as number)
|
||||
if (!character) {
|
||||
logger.error('chat:send_message error', 'Character not found')
|
||||
callback(false)
|
||||
return
|
||||
}
|
||||
|
||||
const zone = await ZoneRepository.getById(character.zoneId)
|
||||
if (!zone) return
|
||||
if (!zone) {
|
||||
logger.error('chat:send_message error', 'Zone not found')
|
||||
callback(false)
|
||||
return
|
||||
}
|
||||
|
||||
callback(true)
|
||||
|
||||
io.to(zone.id.toString()).emit('chat:message', {
|
||||
this.io.to(zone.id.toString()).emit('chat:message', {
|
||||
character: character,
|
||||
message: data.message
|
||||
})
|
||||
} catch (error: any) {
|
||||
console.log(`---Error sending message: ${error.message}`)
|
||||
logger.error('chat:send_message error', error.message)
|
||||
callback(false)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user