feat(webui): add library action menu item to empty trash

This commit is contained in:
Gauthier Roebroeck 2021-07-08 15:52:30 +08:00
parent 4dac73ea9f
commit 31fbf2a829
3 changed files with 34 additions and 1 deletions

View file

@ -16,6 +16,9 @@
<v-list-item @click="confirmRefreshMetadataModal = true"> <v-list-item @click="confirmRefreshMetadataModal = true">
<v-list-item-title>{{ $t('menu.refresh_metadata') }}</v-list-item-title> <v-list-item-title>{{ $t('menu.refresh_metadata') }}</v-list-item-title>
</v-list-item> </v-list-item>
<v-list-item @click="confirmEmptyTrash = true">
<v-list-item-title>{{ $t('menu.empty_trash') }}</v-list-item-title>
</v-list-item>
<v-list-item @click="edit"> <v-list-item @click="edit">
<v-list-item-title>{{ $t('menu.edit') }}</v-list-item-title> <v-list-item-title>{{ $t('menu.edit') }}</v-list-item-title>
</v-list-item> </v-list-item>
@ -41,6 +44,14 @@
:button-confirm="$t('dialog.refresh_library_metadata.button_confirm')" :button-confirm="$t('dialog.refresh_library_metadata.button_confirm')"
@confirm="refreshMetadata" @confirm="refreshMetadata"
/> />
<confirmation-dialog
v-model="confirmEmptyTrash"
:title="$t('dialog.empty_trash.title')"
:body="$t('dialog.empty_trash.body')"
:button-confirm="$t('dialog.empty_trash.button_confirm')"
@confirm="emptyTrash"
/>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -60,6 +71,7 @@ export default Vue.extend({
return { return {
confirmAnalyzeModal: false, confirmAnalyzeModal: false,
confirmRefreshMetadataModal: false, confirmRefreshMetadataModal: false,
confirmEmptyTrash: false,
} }
}, },
computed: { computed: {
@ -77,6 +89,9 @@ export default Vue.extend({
refreshMetadata() { refreshMetadata() {
this.$komgaLibraries.refreshMetadata(this.library) this.$komgaLibraries.refreshMetadata(this.library)
}, },
emptyTrash() {
this.$komgaLibraries.emptyTrash(this.library)
},
edit() { edit() {
this.$store.dispatch('dialogEditLibrary', this.library) this.$store.dispatch('dialogEditLibrary', this.library)
}, },

View file

@ -455,6 +455,11 @@
"page_of_pages": "{page} / {pages}", "page_of_pages": "{page} / {pages}",
"title": "Inspect Book", "title": "Inspect Book",
"title_comparison": "Book Comparison" "title_comparison": "Book Comparison"
},
"empty_trash": {
"title": "Empty trash for library",
"body": "By default the media server doesn't remove information for media right away. This helps if a drive is temporarily disconnected. When you empty the trash for a library, all information about missing media is deleted.",
"button_confirm": "Empty"
} }
}, },
"enums": { "enums": {
@ -558,6 +563,7 @@
"download_series": "Download series", "download_series": "Download series",
"edit": "Edit", "edit": "Edit",
"edit_metadata": "Edit metadata", "edit_metadata": "Edit metadata",
"empty_trash": "Empty trash",
"mark_read": "Mark as read", "mark_read": "Mark as read",
"mark_unread": "Mark as unread", "mark_unread": "Mark as unread",
"refresh_metadata": "Refresh metadata", "refresh_metadata": "Refresh metadata",

View file

@ -1,4 +1,4 @@
import { AxiosInstance } from 'axios' import {AxiosInstance} from 'axios'
const API_LIBRARIES = '/api/v1/libraries' const API_LIBRARIES = '/api/v1/libraries'
@ -104,4 +104,16 @@ export default class KomgaLibrariesService {
throw new Error(msg) throw new Error(msg)
} }
} }
async emptyTrash (library: LibraryDto) {
try {
await this.http.post(`${API_LIBRARIES}/${library.id}/empty-trash`)
} catch (e) {
let msg = `An error occurred while trying to empty trash for library '${library.name}'`
if (e.response.data.message) {
msg += `: ${e.response.data.message}`
}
throw new Error(msg)
}
}
} }