diff --git a/komga-webui/src/locales/en.json b/komga-webui/src/locales/en.json index ca731d727..c26e1f5b2 100644 --- a/komga-webui/src/locales/en.json +++ b/komga-webui/src/locales/en.json @@ -512,6 +512,12 @@ "title_comparison": "Book Comparison" } }, + "duplicates": { + "file_hash": "File hash", + "size": "Size", + "title": "Duplicate Files", + "url": "URL" + }, "enums": { "copy_mode": { "HARDLINK": "Hardlink/Copy Files", diff --git a/komga-webui/src/router.ts b/komga-webui/src/router.ts index bdea0f968..fe0089299 100644 --- a/komga-webui/src/router.ts +++ b/komga-webui/src/router.ts @@ -88,6 +88,12 @@ const router = new Router({ beforeEnter: adminGuard, component: () => import(/* webpackChunkName: "settings-analysis" */ './views/SettingsMediaAnalysis.vue'), }, + { + path: '/settings/duplicates', + name: 'settings-duplicates', + beforeEnter: adminGuard, + component: () => import(/* webpackChunkName: "settings-duplicates" */ './views/SettingsDuplicates.vue'), + }, { path: '/settings/server', name: 'settings-server', diff --git a/komga-webui/src/services/komga-books.service.ts b/komga-webui/src/services/komga-books.service.ts index 1c47190fc..d97af4d09 100644 --- a/komga-webui/src/services/komga-books.service.ts +++ b/komga-webui/src/services/komga-books.service.ts @@ -51,6 +51,21 @@ export default class KomgaBooksService { } } + async getDuplicateBooks(pageRequest?: PageRequest): Promise> { + try { + return (await this.http.get(`${API_BOOKS}/duplicates`, { + params: pageRequest, + paramsSerializer: params => qs.stringify(params, {indices: false}), + })).data + } catch (e) { + let msg = 'An error occurred while trying to retrieve duplicate books' + if (e.response.data.message) { + msg += `: ${e.response.data.message}` + } + throw new Error(msg) + } + } + async getBooksOnDeck(libraryId?: string, pageRequest?: PageRequest): Promise> { try { const params = {...pageRequest} as any diff --git a/komga-webui/src/views/SettingsDuplicates.vue b/komga-webui/src/views/SettingsDuplicates.vue new file mode 100644 index 000000000..f35ac10d7 --- /dev/null +++ b/komga-webui/src/views/SettingsDuplicates.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/komga-webui/src/views/SettingsHolder.vue b/komga-webui/src/views/SettingsHolder.vue index c81d4a3d7..329603f44 100644 --- a/komga-webui/src/views/SettingsHolder.vue +++ b/komga-webui/src/views/SettingsHolder.vue @@ -10,6 +10,7 @@ {{ $t('media_analysis.media_analysis') }} + {{ $t('duplicates.title') }} {{ $t('users.users') }} {{ $t('server.tab_title') }}