diff --git a/komga-webui/src/components/LibraryActionsMenu.vue b/komga-webui/src/components/LibraryActionsMenu.vue index ebe6592ea..b344b1673 100644 --- a/komga-webui/src/components/LibraryActionsMenu.vue +++ b/komga-webui/src/components/LibraryActionsMenu.vue @@ -13,6 +13,9 @@ Analyze + + Refresh metadata + Delete @@ -56,6 +59,9 @@ export default Vue.extend({ analyze () { this.$komgaLibraries.analyzeLibrary(this.library) }, + refreshMetadata () { + this.$komgaLibraries.refreshMetadata(this.library) + }, promptDeleteLibrary () { this.modalDeleteLibrary = true }, diff --git a/komga-webui/src/services/komga-books.service.ts b/komga-webui/src/services/komga-books.service.ts index 219875139..be7bae54e 100644 --- a/komga-webui/src/services/komga-books.service.ts +++ b/komga-webui/src/services/komga-books.service.ts @@ -96,6 +96,18 @@ export default class KomgaBooksService { } } + async refreshMetadata (book: BookDto) { + try { + await this.http.post(`${API_BOOKS}/${book.id}/metadata/refresh`) + } catch (e) { + let msg = `An error occurred while trying to refresh metadata for book '${book.name}'` + if (e.response.data.message) { + msg += `: ${e.response.data.message}` + } + throw new Error(msg) + } + } + async updateMetadata (bookId: number, metadata: BookMetadataUpdateDto): Promise { try { return (await this.http.patch(`${API_BOOKS}/${bookId}/metadata`, metadata)).data diff --git a/komga-webui/src/services/komga-libraries.service.ts b/komga-webui/src/services/komga-libraries.service.ts index 637c74d5d..4cd2f8532 100644 --- a/komga-webui/src/services/komga-libraries.service.ts +++ b/komga-webui/src/services/komga-libraries.service.ts @@ -80,4 +80,16 @@ export default class KomgaLibrariesService { throw new Error(msg) } } + + async refreshMetadata (library: LibraryDto) { + try { + await this.http.post(`${API_LIBRARIES}/${library.id}/metadata/refresh`) + } catch (e) { + let msg = `An error occurred while trying to refresh metadata for library '${library.name}'` + if (e.response.data.message) { + msg += `: ${e.response.data.message}` + } + throw new Error(msg) + } + } } diff --git a/komga-webui/src/services/komga-series.service.ts b/komga-webui/src/services/komga-series.service.ts index c9c068acb..c9a6dcf5a 100644 --- a/komga-webui/src/services/komga-series.service.ts +++ b/komga-webui/src/services/komga-series.service.ts @@ -105,6 +105,18 @@ export default class KomgaSeriesService { } } + async refreshMetadata (series: SeriesDto) { + try { + await this.http.post(`${API_SERIES}/${series.id}/metadata/refresh`) + } catch (e) { + let msg = `An error occurred while trying to refresh metadata for series '${series.name}'` + if (e.response.data.message) { + msg += `: ${e.response.data.message}` + } + throw new Error(msg) + } + } + async updateMetadata (seriesId: number, metadata: SeriesMetadataUpdateDto): Promise { try { return (await this.http.patch(`${API_SERIES}/${seriesId}/metadata`, metadata)).data diff --git a/komga-webui/src/views/BrowseBook.vue b/komga-webui/src/views/BrowseBook.vue index 556f3f650..ed1048fda 100644 --- a/komga-webui/src/views/BrowseBook.vue +++ b/komga-webui/src/views/BrowseBook.vue @@ -26,6 +26,9 @@ Analyze + + Refresh metadata + @@ -236,6 +239,9 @@ export default Vue.extend({ analyze () { this.$komgaBooks.analyzeBook(this.book) }, + refreshMetadata () { + this.$komgaBooks.refreshMetadata(this.book) + }, }, }) diff --git a/komga-webui/src/views/BrowseSeries.vue b/komga-webui/src/views/BrowseSeries.vue index 7f8015a47..231a670a6 100644 --- a/komga-webui/src/views/BrowseSeries.vue +++ b/komga-webui/src/views/BrowseSeries.vue @@ -20,6 +20,9 @@ Analyze + + Refresh metadata + @@ -330,6 +333,9 @@ export default mixins(VisibleElements).extend({ analyze () { this.$komgaSeries.analyzeSeries(this.series) }, + refreshMetadata () { + this.$komgaSeries.refreshMetadata(this.series) + }, singleEdit (book: BookDto) { this.editBookSingle = book this.dialogEditBookSingle = true