forked from noxious/server
Chat event & service callback improvements
This commit is contained in:
parent
785a232776
commit
4e7e13d6f4
@ -15,14 +15,12 @@ export default class ChatMessageEvent extends BaseEvent {
|
||||
|
||||
private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise<void> {
|
||||
try {
|
||||
if (!data.message || ChatService.isCommand(data.message)) {
|
||||
return callback(false)
|
||||
}
|
||||
if (!data.message || ChatService.isCommand(data.message)) return
|
||||
|
||||
const mapCharacter = MapManager.getCharacterById(this.socket.characterId!)
|
||||
if (!mapCharacter) {
|
||||
this.logger.error('chat:message error', 'Character not found')
|
||||
return callback(false)
|
||||
return
|
||||
}
|
||||
|
||||
const character = mapCharacter.character
|
||||
@ -34,7 +32,7 @@ export default class ChatMessageEvent extends BaseEvent {
|
||||
return callback(false)
|
||||
}
|
||||
|
||||
if (await ChatService.sendMapMessage(character.getId(), map.getId(), data.message)) {
|
||||
if (await ChatService.sendMapMessage(character.getId(), data.message)) {
|
||||
return callback(true)
|
||||
}
|
||||
|
||||
|
@ -7,22 +7,18 @@ import CharacterRepository from '@/repositories/characterRepository'
|
||||
import MapRepository from '@/repositories/mapRepository'
|
||||
|
||||
class ChatService extends BaseService {
|
||||
async sendMapMessage(characterId: UUID, mapId: UUID, message: string): Promise<boolean> {
|
||||
async sendMapMessage(characterId: UUID, message: string): Promise<boolean> {
|
||||
try {
|
||||
const characterRepository = new CharacterRepository()
|
||||
const mapRepository = new MapRepository()
|
||||
|
||||
const character = await characterRepository.getById(characterId)
|
||||
if (!character) return false
|
||||
|
||||
const map = await mapRepository.getById(mapId)
|
||||
if (!map) return false
|
||||
|
||||
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()
|
||||
io.to(mapId).emit(SocketEvent.CHAT_MESSAGE, chat)
|
||||
io.to(character.map.id).emit(SocketEvent.CHAT_MESSAGE, { character: character.getName(), message: message })
|
||||
return true
|
||||
} catch (error: any) {
|
||||
this.logger.error(`Failed to save chat message: ${error instanceof Error ? error.message : String(error)}`)
|
||||
|
Loading…
x
Reference in New Issue
Block a user