diff --git a/komga-webui/src/components/Dialogs.vue b/komga-webui/src/components/Dialogs.vue index 84486cb2..5eb5d1c6 100644 --- a/komga-webui/src/components/Dialogs.vue +++ b/komga-webui/src/components/Dialogs.vue @@ -17,6 +17,19 @@ :library="deleteLibrary" @deleted="libraryDeleted" /> + + + + + @@ -24,12 +37,20 @@ import CollectionAddToDialog from '@/components/dialogs/CollectionAddToDialog.vue' import CollectionDeleteDialog from '@/components/dialogs/CollectionDeleteDialog.vue' import LibraryDeleteDialog from '@/components/dialogs/LibraryDeleteDialog.vue' -import { COLLECTION_CHANGED, COLLECTION_DELETED, LIBRARY_DELETED, SERIES_CHANGED } from '@/types/events' +import { BOOK_CHANGED, COLLECTION_CHANGED, COLLECTION_DELETED, LIBRARY_DELETED, SERIES_CHANGED } from '@/types/events' import Vue from 'vue' +import EditBooksDialog from '@/components/dialogs/EditBooksDialog.vue' +import EditSeriesDialog from '@/components/dialogs/EditSeriesDialog.vue' export default Vue.extend({ name: 'Dialogs', - components: { CollectionAddToDialog, CollectionDeleteDialog, LibraryDeleteDialog }, + components: { + CollectionAddToDialog, + CollectionDeleteDialog, + LibraryDeleteDialog, + EditBooksDialog, + EditSeriesDialog, + }, computed: { addToCollectionDialog: { get (): boolean { @@ -64,6 +85,28 @@ export default Vue.extend({ deleteLibrary (): LibraryDto { return this.$store.state.deleteLibrary }, + updateBooksDialog: { + get (): boolean { + return this.$store.state.updateBooksDialog + }, + set (val) { + this.$store.dispatch('dialogUpdateBooksDisplay', val) + }, + }, + updateBooks (): BookDto | BookDto[] { + return this.$store.state.updateBooks + }, + updateSeriesDialog: { + get (): boolean { + return this.$store.state.updateSeriesDialog + }, + set (val) { + this.$store.dispatch('dialogUpdateSeriesDisplay', val) + }, + }, + updateSeries (): SeriesDto | SeriesDto[] { + return this.$store.state.updateSeries + }, }, methods: { collectionAdded () { @@ -92,6 +135,16 @@ export default Vue.extend({ id: this.deleteLibrary.id, } as EventLibraryDeleted) }, + bookUpdated (book: BookDto) { + this.$eventHub.$emit(BOOK_CHANGED, { + id: book.id, + } as EventBookChanged) + }, + seriesUpdated (series: SeriesDto) { + this.$eventHub.$emit(SERIES_CHANGED, { + id: series.id, + } as EventSeriesChanged) + }, }, }) diff --git a/komga-webui/src/components/dialogs/EditBooksDialog.vue b/komga-webui/src/components/dialogs/EditBooksDialog.vue index a26f6ece..5e790d4f 100644 --- a/komga-webui/src/components/dialogs/EditBooksDialog.vue +++ b/komga-webui/src/components/dialogs/EditBooksDialog.vue @@ -559,14 +559,12 @@ export default Vue.extend({ const toUpdate = (this.single ? [this.books] : this.books) as BookDto[] for (const b of toUpdate) { try { - const updatedBooks = await this.$komgaBooks.updateMetadata(b.id, metadata) - updated.push(updatedBooks) + await this.$komgaBooks.updateMetadata(b.id, metadata) + this.$emit('updated', b) } catch (e) { this.showSnack(e.message) - updated.push(b) } } - this.$emit('update:books', this.single ? updated[0] : updated) return true } else return false }, @@ -575,5 +573,5 @@ export default Vue.extend({ diff --git a/komga-webui/src/components/dialogs/EditSeriesDialog.vue b/komga-webui/src/components/dialogs/EditSeriesDialog.vue index a90698ef..3f83d1d0 100644 --- a/komga-webui/src/components/dialogs/EditSeriesDialog.vue +++ b/komga-webui/src/components/dialogs/EditSeriesDialog.vue @@ -281,14 +281,12 @@ export default Vue.extend({ const toUpdate = (this.single ? [this.series] : this.series) as SeriesDto[] for (const s of toUpdate) { try { - const updatedSeries = await this.$komgaSeries.updateMetadata(s.id, metadata) - updated.push(updatedSeries) + await this.$komgaSeries.updateMetadata(s.id, metadata) + this.$emit('updated', s) } catch (e) { this.showSnack(e.message) - updated.push(s) } } - this.$emit('update:series', this.single ? updated[0] : updated) return true } else return false }, diff --git a/komga-webui/src/services/komga-books.service.ts b/komga-webui/src/services/komga-books.service.ts index 0c7d2129..aa8920fd 100644 --- a/komga-webui/src/services/komga-books.service.ts +++ b/komga-webui/src/services/komga-books.service.ts @@ -125,9 +125,9 @@ export default class KomgaBooksService { } } - async updateMetadata (bookId: number, metadata: BookMetadataUpdateDto): Promise { + async updateMetadata (bookId: number, metadata: BookMetadataUpdateDto) { try { - return (await this.http.patch(`${API_BOOKS}/${bookId}/metadata`, metadata)).data + await this.http.patch(`${API_BOOKS}/${bookId}/metadata`, metadata) } catch (e) { let msg = `An error occurred while trying to update book metadata` if (e.response.data.message) { diff --git a/komga-webui/src/services/komga-series.service.ts b/komga-webui/src/services/komga-series.service.ts index 1f9831ad..b3cb694a 100644 --- a/komga-webui/src/services/komga-series.service.ts +++ b/komga-webui/src/services/komga-series.service.ts @@ -136,9 +136,9 @@ export default class KomgaSeriesService { } } - async updateMetadata (seriesId: number, metadata: SeriesMetadataUpdateDto): Promise { + async updateMetadata (seriesId: number, metadata: SeriesMetadataUpdateDto) { try { - return (await this.http.patch(`${API_SERIES}/${seriesId}/metadata`, metadata)).data + await this.http.patch(`${API_SERIES}/${seriesId}/metadata`, metadata) } catch (e) { let msg = `An error occurred while trying to update series metadata` if (e.response.data.message) { diff --git a/komga-webui/src/store.ts b/komga-webui/src/store.ts index 97375731..efa78b38 100644 --- a/komga-webui/src/store.ts +++ b/komga-webui/src/store.ts @@ -11,6 +11,10 @@ export default new Vuex.Store({ deleteCollectionDialog: false, deleteLibrary: {} as LibraryDto, deleteLibraryDialog: false, + updateBooks: {} as BookDto | BookDto[], + updateBooksDialog: false, + updateSeries: {} as SeriesDto | SeriesDto[], + updateSeriesDialog: false, }, mutations: { setAddToCollectionSeries (state, series) { @@ -31,6 +35,18 @@ export default new Vuex.Store({ setDeleteLibraryDialog (state, dialog) { state.deleteLibraryDialog = dialog }, + setUpdateBooks (state, books) { + state.updateBooks = books + }, + setUpdateBooksDialog (state, dialog) { + state.updateBooksDialog = dialog + }, + setUpdateSeries (state, series) { + state.updateSeries = series + }, + setUpdateSeriesDialog (state, dialog) { + state.updateSeriesDialog = dialog + }, }, actions: { dialogAddSeriesToCollection ({ commit }, series) { @@ -54,5 +70,19 @@ export default new Vuex.Store({ dialogDeleteLibraryDisplay ({ commit }, value) { commit('setDeleteLibraryDialog', value) }, + dialogUpdateBooks ({ commit }, books) { + commit('setUpdateBooks', books) + commit('setUpdateBooksDialog', true) + }, + dialogUpdateBooksDisplay ({ commit }, value) { + commit('setUpdateBooksDialog', value) + }, + dialogUpdateSeries ({ commit }, series) { + commit('setUpdateSeries', series) + commit('setUpdateSeriesDialog', true) + }, + dialogUpdateSeriesDisplay ({ commit }, value) { + commit('setUpdateSeriesDialog', value) + }, }, }) diff --git a/komga-webui/src/views/BrowseBook.vue b/komga-webui/src/views/BrowseBook.vue index cf58c68a..ae801ecf 100644 --- a/komga-webui/src/views/BrowseBook.vue +++ b/komga-webui/src/views/BrowseBook.vue @@ -11,7 +11,7 @@ - + mdi-pencil @@ -139,16 +139,12 @@ - diff --git a/komga-webui/src/views/BrowseSeries.vue b/komga-webui/src/views/BrowseSeries.vue index 43256847..6bb236b4 100644 --- a/komga-webui/src/views/BrowseSeries.vue +++ b/komga-webui/src/views/BrowseSeries.vue @@ -20,7 +20,7 @@ - + mdi-pencil @@ -194,15 +194,12 @@ - -