From d89b1c6c08a0b9095ad5772b9fd51973c7bab392 Mon Sep 17 00:00:00 2001 From: wanhose Date: Tue, 15 Oct 2024 16:14:42 +0200 Subject: [PATCH] feat(browser-extension): max attempts fetching data, issues --- .../src/scripts/background.js | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/packages/browser-extension/src/scripts/background.js b/packages/browser-extension/src/scripts/background.js index cfe483b..ec61ae9 100644 --- a/packages/browser-extension/src/scripts/background.js +++ b/packages/browser-extension/src/scripts/background.js @@ -202,17 +202,20 @@ function matchToPattern(match) { /** * @async * @description Refresh data + * @param {number} [attempt] * @returns {Promise} */ -async function refreshData() { - try { - const { data } = await requestManager.fetch(`${apiUrl}/data/`); +async function refreshData(attempt = 1) { + if (attempt <= 3) { + try { + const { data } = await requestManager.fetch(`${apiUrl}/data/`); - await updateStore('data', data); + await updateStore('data', data); - return data; - } catch { - return await refreshData(); + return data; + } catch { + return await refreshData(attempt + 1); + } } } @@ -220,25 +223,32 @@ async function refreshData() { * @async * @description Refresh issues for the given hostname * @param {string} hostname + * @param {number} [attempt] * @returns {Promise} */ -async function refreshIssue(hostname) { - try { - const { data } = await requestManager.fetch(`${apiUrl}/issues/${hostname}/`); +async function refreshIssue(hostname, attempt = 1) { + if (attempt <= 3) { + try { + const { data } = await requestManager.fetch(`${apiUrl}/issues/${hostname}/`); - if (Object.keys(data).length === 0) { - await updateStore(hostname, { issue: { expiresIn: Date.now() + 8 * 60 * 60 * 1000 } }); + if (Object.keys(data).length === 0) { + await updateStore(hostname, { issue: { expiresIn: Date.now() + 8 * 60 * 60 * 1000 } }); - return undefined; + return undefined; + } + + const issue = { + expiresIn: Date.now() + 4 * 60 * 60 * 1000, + flags: data.flags, + url: data.url, + }; + + await updateStore(hostname, { issue }); + + return data; + } catch { + return await refreshIssue(hostname, attempt + 1); } - - const issue = { expiresIn: Date.now() + 4 * 60 * 60 * 1000, flags: data.flags, url: data.url }; - - await updateStore(hostname, { issue }); - - return data; - } catch { - return await refreshData(); } }