From 149bb3e5b2a405996cb7f05d6c5afe9141f91e00 Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 20 Aug 2024 17:04:48 -0500 Subject: [PATCH] Fix:Audible book match not falling back to search after failed ASIN #3314 --- server/providers/Audible.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/server/providers/Audible.js b/server/providers/Audible.js index 7622561341..505b8f0eeb 100644 --- a/server/providers/Audible.js +++ b/server/providers/Audible.js @@ -87,10 +87,10 @@ class Audible { * @param {string} asin * @param {string} region * @param {number} [timeout] response timeout in ms - * @returns {Promise} + * @returns {Promise} */ asinSearch(asin, region, timeout = this.#responseTimeout) { - if (!asin) return [] + if (!asin) return null if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout asin = encodeURIComponent(asin.toUpperCase()) @@ -102,12 +102,12 @@ class Audible { timeout }) .then((res) => { - if (!res || !res.data || !res.data.asin) return null + if (!res?.data?.asin) return null return res.data }) .catch((error) => { Logger.error('[Audible] ASIN search error', error) - return [] + return null }) } @@ -127,16 +127,18 @@ class Audible { } if (!timeout || isNaN(timeout)) timeout = this.#responseTimeout - let items + let items = [] if (asin && isValidASIN(asin.toUpperCase())) { - items = [await this.asinSearch(asin, region, timeout)] + const item = await this.asinSearch(asin, region, timeout) + if (item) items.push(item) } - if (!items && isValidASIN(title.toUpperCase())) { - items = [await this.asinSearch(title, region, timeout)] + if (!items.length && isValidASIN(title.toUpperCase())) { + const item = await this.asinSearch(title, region, timeout) + if (item) items.push(item) } - if (!items) { + if (!items.length) { const queryObj = { num_results: '10', products_sort_by: 'Relevance', @@ -160,7 +162,7 @@ class Audible { return [] }) } - return items?.map((item) => this.cleanResult(item)) || [] + return items.filter(Boolean).map((item) => this.cleanResult(item)) || [] } }