More event streamlining
This commit is contained in:
parent
82aaf8a015
commit
50c2b249f4
@ -15,6 +15,7 @@ export default class characterHairListEvent extends BaseEvent {
|
|||||||
|
|
||||||
const characterHairRepository = new CharacterHairRepository()
|
const characterHairRepository = new CharacterHairRepository()
|
||||||
const items = await characterHairRepository.getAll()
|
const items = await characterHairRepository.getAll()
|
||||||
|
await characterHairRepository.getEntityManager().populate(items, ['sprite'])
|
||||||
|
|
||||||
return callback(items)
|
return callback(items)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -22,12 +22,13 @@ export default class CharacterHairUpdateEvent extends BaseEvent {
|
|||||||
try {
|
try {
|
||||||
if (!(await this.isCharacterGM())) return
|
if (!(await this.isCharacterGM())) return
|
||||||
|
|
||||||
const sprite = await SpriteRepository.getById(data.spriteId)
|
const spriteRepository = new SpriteRepository()
|
||||||
const characterHair = await CharacterHairRepository.getById(data.id)
|
const sprite = await spriteRepository.getById(data.spriteId)
|
||||||
|
if (!sprite) return callback(false)
|
||||||
|
|
||||||
if (!characterHair) {
|
const characterHairRepository = new CharacterHairRepository()
|
||||||
return callback(false)
|
const characterHair = await characterHairRepository.getById(data.id)
|
||||||
}
|
if (!characterHair) return callback(false)
|
||||||
|
|
||||||
await characterHair.setName(data.name).setGender(data.gender).setIsSelectable(data.isSelectable).setSprite(sprite).save()
|
await characterHair.setName(data.name).setGender(data.gender).setIsSelectable(data.isSelectable).setSprite(sprite).save()
|
||||||
return callback(true)
|
return callback(true)
|
||||||
|
@ -15,6 +15,7 @@ export default class CharacterTypeListEvent extends BaseEvent {
|
|||||||
|
|
||||||
const characterTypeRepository = new CharacterTypeRepository()
|
const characterTypeRepository = new CharacterTypeRepository()
|
||||||
const items = await characterTypeRepository.getAll()
|
const items = await characterTypeRepository.getAll()
|
||||||
|
await characterTypeRepository.getEntityManager().populate(items, ['sprite'])
|
||||||
|
|
||||||
return callback(items)
|
return callback(items)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -1,53 +1,49 @@
|
|||||||
import { CharacterGender, CharacterRace } from '@prisma/client'
|
import CharacterRepository from '#repositories/characterRepository'
|
||||||
import { Server } from 'socket.io'
|
import { UUID } from '#application/types'
|
||||||
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
import prisma from '#application/prisma'
|
import CharacterTypeRepository from '#repositories/characterTypeRepository'
|
||||||
import { TSocket } from '#application/types'
|
import { CharacterGender, CharacterRace } from '#application/enums'
|
||||||
import characterRepository from '#repositories/characterRepository'
|
import SpriteRepository from '#repositories/spriteRepository'
|
||||||
|
|
||||||
type Payload = {
|
type Payload = {
|
||||||
id: number
|
id: UUID
|
||||||
name: string
|
name: string
|
||||||
gender: CharacterGender
|
gender: CharacterGender
|
||||||
race: CharacterRace
|
race: CharacterRace
|
||||||
isSelectable: boolean
|
isSelectable: boolean
|
||||||
spriteId: string
|
spriteId: UUID
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class CharacterTypeUpdateEvent {
|
export default class CharacterTypeUpdateEvent extends BaseEvent {
|
||||||
constructor(
|
|
||||||
private readonly io: Server,
|
|
||||||
private readonly socket: TSocket
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public listen(): void {
|
public listen(): void {
|
||||||
this.socket.on('gm:characterType:update', this.handleEvent.bind(this))
|
this.socket.on('gm:characterType:update', this.handleEvent.bind(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
||||||
const character = await characterRepository.getById(this.socket.characterId!)
|
|
||||||
if (!character) return callback(false)
|
|
||||||
|
|
||||||
if (character.role !== 'gm') {
|
|
||||||
return callback(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await prisma.characterType.update({
|
if (!(await this.isCharacterGM())) return
|
||||||
where: { id: data.id },
|
|
||||||
data: {
|
|
||||||
name: data.name,
|
|
||||||
gender: data.gender,
|
|
||||||
race: data.race,
|
|
||||||
isSelectable: data.isSelectable,
|
|
||||||
spriteId: data.spriteId
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
callback(true)
|
const characterTypeRepository = new CharacterTypeRepository()
|
||||||
|
const characterType = await characterTypeRepository.getById(data.id)
|
||||||
|
if (!characterType) return callback(false)
|
||||||
|
|
||||||
|
const spriteRepository = new SpriteRepository()
|
||||||
|
const sprite = await spriteRepository.getById(data.spriteId)
|
||||||
|
if (!sprite) return callback(false)
|
||||||
|
|
||||||
|
await characterType
|
||||||
|
.setName(data.name)
|
||||||
|
.setGender(data.gender)
|
||||||
|
.setRace(data.race)
|
||||||
|
.setIsSelectable(data.isSelectable)
|
||||||
|
.setSprite(sprite)
|
||||||
|
.save()
|
||||||
|
|
||||||
|
return callback(true)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
callback(false)
|
return callback(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user