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 => {