From 45c903895418912f117292ae8bc0b8b738619688 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 26 Dec 2022 15:45:42 -0600 Subject: [PATCH] Fix:Manually updating author image path & realtime update author image #1317 --- client/components/modals/authors/EditModal.vue | 3 ++- server/controllers/AuthorController.js | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/client/components/modals/authors/EditModal.vue b/client/components/modals/authors/EditModal.vue index 28f739d6..c95026d1 100644 --- a/client/components/modals/authors/EditModal.vue +++ b/client/components/modals/authors/EditModal.vue @@ -109,7 +109,8 @@ export default { this.processing = true var result = await this.$axios.$patch(`/api/authors/${this.authorId}`, updatePayload).catch((error) => { console.error('Failed', error) - this.$toast.error(this.$strings.ToastAuthorUpdateFailed) + const errorMsg = error.response ? error.response.data : null + this.$toast.error(errorMsg || this.$strings.ToastAuthorUpdateFailed) return null }) if (result) { diff --git a/server/controllers/AuthorController.js b/server/controllers/AuthorController.js index 0639d005..d3d72f7c 100644 --- a/server/controllers/AuthorController.js +++ b/server/controllers/AuthorController.js @@ -82,6 +82,15 @@ class AuthorController { payload.imagePath = imageData.path hasUpdated = true } + } else if (payload.imagePath && payload.imagePath !== req.author.imagePath) { // Changing image path locally + if (!await fs.pathExists(payload.imagePath)) { // Make sure image path exists + Logger.error(`[AuthorController] Image path does not exist: "${payload.imagePath}"`) + return res.status(400).send('Author image path does not exist') + } + + if (req.author.imagePath) { + await this.cacheManager.purgeImageCache(req.author.id) // Purge cache + } } } @@ -119,6 +128,8 @@ class AuthorController { } if (hasUpdated) { + req.author.updatedAt = Date.now() + if (authorNameUpdate) { // Update author name on all books const itemsWithAuthor = this.db.libraryItems.filter(li => li.mediaType === 'book' && li.media.metadata.hasAuthor(req.author.id)) itemsWithAuthor.forEach(libraryItem => {