diff --git a/komga-webui/src/components/PageHashKnownCard.vue b/komga-webui/src/components/PageHashKnownCard.vue index 581e817f3..06b0e4eaf 100644 --- a/komga-webui/src/components/PageHashKnownCard.vue +++ b/komga-webui/src/components/PageHashKnownCard.vue @@ -65,9 +65,15 @@ - + + mdi-check {{ $t('duplicate_pages.action_delete_matches') }} + {{ $t('duplicate_pages.action_ignore') }} @@ -102,6 +108,7 @@ export default Vue.extend({ getFileSize, PageHashAction, matchCount: undefined as number | undefined, + deleteRequested: false, } }, computed: { @@ -134,7 +141,11 @@ export default Vue.extend({ else this.matchCount = undefined }, - deleteMatches() { + async deleteMatches() { + if(!this.deleteRequested) { + await this.$komgaPageHashes.performDelete(this.hash) + this.deleteRequested = true + } }, ignore() { this.updatePageHash(PageHashAction.IGNORE) diff --git a/komga-webui/src/locales/en.json b/komga-webui/src/locales/en.json index 2d4aa66b4..473e9470c 100644 --- a/komga-webui/src/locales/en.json +++ b/komga-webui/src/locales/en.json @@ -545,7 +545,8 @@ "matches_n": "No matches | 1 match | {count} matches", "saved_size": "Saved {size}", "title": "Duplicate pages", - "unknown_size": "Unknown size" + "unknown_size": "Unknown size", + "info": "Deleting duplicate pages will modify your files. Backup your files and use manual deletion before using automatic deletion." }, "duplicates": { "file_hash": "File hash", diff --git a/komga-webui/src/services/komga-pagehashes.service.ts b/komga-webui/src/services/komga-pagehashes.service.ts index ed64d5285..1504cab32 100644 --- a/komga-webui/src/services/komga-pagehashes.service.ts +++ b/komga-webui/src/services/komga-pagehashes.service.ts @@ -81,4 +81,23 @@ export default class KomgaPageHashesService { throw new Error(msg) } } + + async performDelete(pageHash: PageHashKnownDto) { + try { + const params = { + media_type: pageHash.mediaType, + file_size: pageHash.size || -1, + } + await this.http.post(`${API_PAGE_HASH}/${pageHash.hash}/perform-delete`, pageHash, { + params: params, + paramsSerializer: params => qs.stringify(params, {indices: false}), + }) + } catch (e) { + let msg = `An error occurred while trying to execute perform-delete on page hash ${pageHash}` + if (e.response.data.message) { + msg += `: ${e.response.data.message}` + } + throw new Error(msg) + } + } } diff --git a/komga-webui/src/views/SettingsDuplicatePagesKnown.vue b/komga-webui/src/views/SettingsDuplicatePagesKnown.vue index 869fd6cb7..b218942f3 100644 --- a/komga-webui/src/views/SettingsDuplicatePagesKnown.vue +++ b/komga-webui/src/views/SettingsDuplicatePagesKnown.vue @@ -1,5 +1,9 @@