From c929b94ee1d69f173db6697b4c606f80176737e9 Mon Sep 17 00:00:00 2001 From: Admin Date: Sat, 10 May 2025 10:04:05 +0700 Subject: [PATCH] update clearlazy tab --- auto-bid-tool/index.js | 8 +++++--- auto-bid-tool/system/utils.js | 30 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/auto-bid-tool/index.js b/auto-bid-tool/index.js index 87345dc..99180ad 100644 --- a/auto-bid-tool/index.js +++ b/auto-bid-tool/index.js @@ -13,6 +13,7 @@ import browser from "./system/browser.js"; import configs from "./system/config.js"; import { delay, + isPageAvailable, isTimeReached, safeClosePage, subtractSeconds, @@ -273,8 +274,9 @@ const clearLazyTab = async () => { if (!item.page_context) continue; try { - if (!(await item.page_context.title())) { - // await vì title() là async + const avalableResult = await isPageAvailable(item.page_context); + + if (!avalableResult) { await safeClosePage(item); } } catch (e) { @@ -466,7 +468,7 @@ const trackingLoginStatus = async () => { socket.on("webUpdated", async (data) => { console.log("📢 Account was updated:", data); - const webBid = MANAGER_BIDS.find((item) => item.id === data.id); + const webBid = MANAGER_BIDS.find((item) => item?.id === data?.id); if ( webBid && diff --git a/auto-bid-tool/system/utils.js b/auto-bid-tool/system/utils.js index 080e903..2582ca2 100644 --- a/auto-bid-tool/system/utils.js +++ b/auto-bid-tool/system/utils.js @@ -92,7 +92,7 @@ export async function safeClosePage(item) { try { const page = item.page_context; - if (!page?.isClosed() && page?.close) { + if (page && !page.isClosed() && page.close) { await safeClosePageReal(page); } @@ -101,10 +101,17 @@ export async function safeClosePage(item) { } if (item?.browser_context) { - item.browser_context?.close(); + try { + await item.browser_context.close(); + } catch (ctxErr) { + console.warn( + `⚠️ Failed to close browser context for item ${item.id}: ${ctxErr.message}` + ); + } + item.browser_context = undefined; } } catch (error) { - console.log("Can't close item: " + item.id); + console.warn(`⚠️ Can't close item ${item?.id}: ${error.message}`); } } @@ -279,3 +286,20 @@ export function subtractSeconds(time, seconds) { date.setSeconds(date.getSeconds() - seconds); return date.toUTCString(); } + +export async function isPageAvailable(page) { + if (!page || page.isClosed()) return false; + + try { + await Promise.race([ + page.title(), // hoặc page.url(), evaluate, vv + new Promise((_, reject) => + setTimeout(() => reject(new Error("Timeout")), 1000) + ), + ]); + return true; + } catch (err) { + console.warn(`⚠️ Page not available: ${err.message}`); + return false; + } +}