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 { 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) } } }