diff --git a/client/pages/audiobook/_id/chapters.vue b/client/pages/audiobook/_id/chapters.vue index 7b56f5c9..55f74b5c 100644 --- a/client/pages/audiobook/_id/chapters.vue +++ b/client/pages/audiobook/_id/chapters.vue @@ -141,10 +141,21 @@
-
- - - {{ $strings.ButtonSearch }} +
+
+
+ + + {{ $strings.ButtonSearch }} +
+ +
+

{{ asinError }}

+

{{ $strings.MessageAsinCheck }}

+
+ + +
@@ -249,6 +260,7 @@ export default { findingChapters: false, showFindChaptersModal: false, chapterData: null, + asinError: null, showSecondInputs: false, audibleRegions: ['US', 'CA', 'UK', 'AU', 'FR', 'DE', 'JP', 'IT', 'IN', 'ES'], hasChanges: false @@ -546,14 +558,14 @@ export default { this.findingChapters = true this.chapterData = null + this.asinError = null // used to show warning about audible vs amazon ASIN this.$axios .$get(`/api/search/chapters?asin=${this.asinInput}®ion=${this.regionInput}`) .then((data) => { this.findingChapters = false if (data.error) { - this.$toast.error(data.error) - this.showFindChaptersModal = false + this.asinError = this.$getString(data.stringKey) } else { console.log('Chapter data', data) this.chapterData = data diff --git a/client/strings/en-us.json b/client/strings/en-us.json index ef43d4f5..2bf70b53 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -705,6 +705,7 @@ "LabelYourProgress": "Your Progress", "MessageAddToPlayerQueue": "Add to player queue", "MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests.
The Apprise API Url should be the full URL path to send the notification, e.g., if your API instance is served at http://192.168.1.1:8337 then you would put http://192.168.1.1:8337/notify.", + "MessageAsinCheck": "Ensure you are using the ASIN from the correct Audible region, not Amazon.", "MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items & /metadata/authors. Backups do not include any files stored in your library folders.", "MessageBackupsLocationEditNote": "Note: Updating the backup location will not move or modify existing backups", "MessageBackupsLocationNoEditNote": "Note: The backup location is set through an environment variable and cannot be changed here.", @@ -723,6 +724,7 @@ "MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration", "MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time", "MessageChapterStartIsAfter": "Chapter start is after the end of your audiobook", + "MessageChaptersNotFound": "Chapters not found", "MessageCheckingCron": "Checking cron...", "MessageConfirmCloseFeed": "Are you sure you want to close this feed?", "MessageConfirmDeleteBackup": "Are you sure you want to delete backup for {0}?", @@ -779,6 +781,7 @@ "MessageForceReScanDescription": "will scan all files again like a fresh scan. Audio file ID3 tags, OPF files, and text files will be scanned as new.", "MessageImportantNotice": "Important Notice!", "MessageInsertChapterBelow": "Insert chapter below", + "MessageInvalidAsin": "Invalid ASIN", "MessageItemsSelected": "{0} items selected", "MessageItemsUpdated": "{0} items updated", "MessageJoinUsOn": "Join us on", diff --git a/server/controllers/SearchController.js b/server/controllers/SearchController.js index 51aaa910..bb3382f7 100644 --- a/server/controllers/SearchController.js +++ b/server/controllers/SearchController.js @@ -108,12 +108,12 @@ class SearchController { async findChapters(req, res) { const asin = req.query.asin if (!isValidASIN(asin.toUpperCase())) { - return res.json({ error: 'Invalid ASIN' }) + return res.json({ error: 'Invalid ASIN', stringKey: 'MessageInvalidAsin' }) } const region = (req.query.region || 'us').toLowerCase() const chapterData = await BookFinder.findChapters(asin, region) if (!chapterData) { - return res.json({ error: 'Chapters not found' }) + return res.json({ error: 'Chapters not found', stringKey: 'MessageChaptersNotFound' }) } res.json(chapterData) }