From 745087a1cbfdbdc72c3ea25c71b15a22af0f79ee Mon Sep 17 00:00:00 2001 From: xenticore Date: Thu, 1 May 2025 18:25:47 -0400 Subject: [PATCH] fix: stronger error handling in `fetchPrice` --- src/content/priceService.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/content/priceService.ts b/src/content/priceService.ts index 4036c8c..fac3b1a 100644 --- a/src/content/priceService.ts +++ b/src/content/priceService.ts @@ -51,7 +51,7 @@ export async function fetchPrice(token: string, sku: string, update: Date = new if (!data || data.sku != sku || 'update' in data && 'ttl' in data && Date.now() > (new Date(data.update).getTime() + data.ttl)) { logDebug(`Fetching price data for ${sku}`) - if(!token) { + if(!token || token === '') { throw new Error('No token provided') } data = new ItemPriceData() @@ -64,14 +64,15 @@ export async function fetchPrice(token: string, sku: string, update: Date = new if(__ENV_USERSCRIPT) { response = await priceUsingPricesTF(token, sku) } else { - response = JSON.parse(await chrome.runtime.sendMessage({contentScriptQuery: "priceSKU", service: "prices.tf", sku: sku, token: token})); + response = await chrome.runtime.sendMessage({contentScriptQuery: "priceSKU", service: "prices.tf", sku: sku, token: token}); } - if (response) { - data.keys = response.keys - data.metal = response.metal + if (!response || response instanceof Error) { + throw new Error(`Bad response: ${response}`) } + data.keys = response.keys + data.metal = response.metal } catch (error) { - throw new Error(`Received ${error} error while pricing ${sku} using prices.tf`) + throw new Error(`Received "${error}" error while pricing ${sku} using prices.tf`) } if ('metal' in data && 'keys' in data) {