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> {
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)}`)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user