fchat-rising/site/character_page/delete_dialog.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>