1
0
forked from noxious/server

Chat event & service callback improvements

This commit is contained in:
Dennis Postma 2025-02-12 03:43:28 +01:00
parent 785a232776
commit 4e7e13d6f4
2 changed files with 6 additions and 12 deletions

View File

@ -15,14 +15,12 @@ export default class ChatMessageEvent extends BaseEvent {
private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise<void> { private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise<void> {
try { try {
if (!data.message || ChatService.isCommand(data.message)) { if (!data.message || ChatService.isCommand(data.message)) return
return callback(false)
}
const mapCharacter = MapManager.getCharacterById(this.socket.characterId!) const mapCharacter = MapManager.getCharacterById(this.socket.characterId!)
if (!mapCharacter) { if (!mapCharacter) {
this.logger.error('chat:message error', 'Character not found') this.logger.error('chat:message error', 'Character not found')
return callback(false) return
} }
const character = mapCharacter.character const character = mapCharacter.character
@ -34,7 +32,7 @@ export default class ChatMessageEvent extends BaseEvent {
return callback(false) return callback(false)
} }
if (await ChatService.sendMapMessage(character.getId(), map.getId(), data.message)) { if (await ChatService.sendMapMessage(character.getId(), data.message)) {
return callback(true) return callback(true)
} }

View File

@ -7,22 +7,18 @@ import CharacterRepository from '@/repositories/characterRepository'
import MapRepository from '@/repositories/mapRepository' import MapRepository from '@/repositories/mapRepository'
class ChatService extends BaseService { class ChatService extends BaseService {
async sendMapMessage(characterId: UUID, mapId: UUID, message: string): Promise<boolean> { async sendMapMessage(characterId: UUID, message: string): Promise<boolean> {
try { try {
const characterRepository = new CharacterRepository() const characterRepository = new CharacterRepository()
const mapRepository = new MapRepository()
const character = await characterRepository.getById(characterId) const character = await characterRepository.getById(characterId)
if (!character) return false if (!character) return false
const map = await mapRepository.getById(mapId)
if (!map) return false
const chat = new Chat() const chat = new Chat()
await chat.setCharacter(character).setMap(map).setMessage(message).save() await chat.setCharacter(character).setMap(character.map).setMessage(message).save()
const io = SocketManager.getIO() const io = SocketManager.getIO()
io.to(mapId).emit(SocketEvent.CHAT_MESSAGE, chat) io.to(character.map.id).emit(SocketEvent.CHAT_MESSAGE, { character: character.getName(), message: message })
return true return true
} catch (error: any) { } catch (error: any) {
this.logger.error(`Failed to save chat message: ${error instanceof Error ? error.message : String(error)}`) this.logger.error(`Failed to save chat message: ${error instanceof Error ? error.message : String(error)}`)