filebrowser/frontend/src/components/prompts/Delete.vue

67 lines
1.9 KiB
Vue
Raw Normal View History

2018-02-01 12:17:04 +00:00
<template>
<div class="card floating">
<div class="card-content">
<p v-if="req.kind !== 'listing'">{{ $t('prompts.deleteMessageSingle') }}</p>
<p v-else>{{ $t('prompts.deleteMessageMultiple', { count: selectedCount}) }}</p>
</div>
<div class="card-action">
<button @click="$store.commit('closeHovers')"
class="button button--flat button--grey"
2018-02-01 12:17:04 +00:00
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button @click="submit"
class="button button--flat button--red"
2018-02-01 12:17:04 +00:00
:aria-label="$t('buttons.delete')"
:title="$t('buttons.delete')">{{ $t('buttons.delete') }}</button>
</div>
</div>
</template>
<script>
import {mapGetters, mapMutations, mapState} from 'vuex'
import { files as api } from '@/api'
2018-02-01 12:17:04 +00:00
import url from '@/utils/url'
import buttons from '@/utils/buttons'
export default {
name: 'delete',
computed: {
...mapGetters(['isListing', 'selectedCount']),
2018-02-01 12:17:04 +00:00
...mapState(['req', 'selected'])
},
methods: {
...mapMutations(['closeHovers']),
submit: async function () {
2018-02-01 12:17:04 +00:00
this.closeHovers()
buttons.loading('delete')
try {
if (!this.isListing) {
await api.remove(this.$route.path)
buttons.success('delete')
this.$router.push({ path: url.removeLastDir(this.$route.path) + '/' })
return
}
2018-02-01 12:17:04 +00:00
if (this.selectedCount === 0) {
return
}
2018-02-01 12:17:04 +00:00
let promises = []
for (let index of this.selected) {
promises.push(api.remove(this.req.items[index].url))
}
2018-02-01 12:17:04 +00:00
await Promise.all(promises)
buttons.success('delete')
this.$store.commit('setReload', true)
} catch (e) {
buttons.done('delete')
this.$showError(e)
if (this.isListing) this.$store.commit('setReload', true)
2018-02-01 12:17:04 +00:00
}
}
}
}
</script>