forked from noxious/server
30 lines
872 B
TypeScript
30 lines
872 B
TypeScript
import { BaseEvent } from '#application/base/baseEvent'
|
|
import { UUID } from '#application/types'
|
|
import ZoneRepository from '#repositories/zoneRepository'
|
|
|
|
type Payload = {
|
|
zoneId: UUID
|
|
}
|
|
|
|
export default class ZoneDeleteEvent extends BaseEvent {
|
|
public listen(): void {
|
|
this.socket.on('gm:zone_editor:zone:delete', this.handleEvent.bind(this))
|
|
}
|
|
|
|
private async handleEvent(data: Payload, callback: (response: boolean) => void): Promise<void> {
|
|
if (!(await this.isCharacterGM())) return
|
|
|
|
try {
|
|
this.logger.info(`Deleting zone ${data.zoneId}`)
|
|
|
|
await (await ZoneRepository.getById(data.zoneId))?.delete()
|
|
|
|
this.logger.info(`Zone ${data.zoneId} deleted successfully.`)
|
|
return callback(true)
|
|
} catch (error: unknown) {
|
|
this.logger.error('gm:zone_editor:zone:delete error', error)
|
|
return callback(false)
|
|
}
|
|
}
|
|
}
|