41 lines
1.3 KiB
Vue
41 lines
1.3 KiB
Vue
<template>
|
|
<modal id="deleteDialog" :action="'Delete character' + name" :disabled="deleting" @submit.prevent="deleteCharacter()">
|
|
Are you sure you want to permanently delete {{ name }}?<br/>
|
|
Character deletion cannot be undone for any reason.
|
|
</modal>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import {Component, Prop} from '@f-list/vue-ts';
|
|
import CustomDialog from '../../components/custom_dialog';
|
|
import Modal from '../../components/Modal.vue';
|
|
import * as Utils from '../utils';
|
|
import {methods} from './data_store';
|
|
import {Character} from './interfaces';
|
|
|
|
@Component({
|
|
components: {modal: Modal}
|
|
})
|
|
export default class DeleteDialog extends CustomDialog {
|
|
@Prop({required: true})
|
|
private readonly character!: Character;
|
|
|
|
deleting = false;
|
|
|
|
get name(): string {
|
|
return this.character.character.name;
|
|
}
|
|
|
|
async deleteCharacter(): Promise<void> {
|
|
try {
|
|
this.deleting = true;
|
|
await methods.characterDelete(this.character.character.id);
|
|
this.hide();
|
|
window.location.assign('/');
|
|
} catch(e) {
|
|
Utils.ajaxError(e, 'Unable to delete character');
|
|
}
|
|
this.deleting = false;
|
|
}
|
|
}
|
|
</script> |