update clearlazy tab

This commit is contained in:
Admin 2025-05-10 10:04:05 +07:00
parent 46a012b673
commit c929b94ee1
2 changed files with 32 additions and 6 deletions

View File

@ -13,6 +13,7 @@ import browser from "./system/browser.js";
import configs from "./system/config.js"; import configs from "./system/config.js";
import { import {
delay, delay,
isPageAvailable,
isTimeReached, isTimeReached,
safeClosePage, safeClosePage,
subtractSeconds, subtractSeconds,
@ -273,8 +274,9 @@ const clearLazyTab = async () => {
if (!item.page_context) continue; if (!item.page_context) continue;
try { try {
if (!(await item.page_context.title())) { const avalableResult = await isPageAvailable(item.page_context);
// await vì title() là async
if (!avalableResult) {
await safeClosePage(item); await safeClosePage(item);
} }
} catch (e) { } catch (e) {
@ -466,7 +468,7 @@ const trackingLoginStatus = async () => {
socket.on("webUpdated", async (data) => { socket.on("webUpdated", async (data) => {
console.log("📢 Account was updated:", 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 ( if (
webBid && webBid &&

View File

@ -92,7 +92,7 @@ export async function safeClosePage(item) {
try { try {
const page = item.page_context; const page = item.page_context;
if (!page?.isClosed() && page?.close) { if (page && !page.isClosed() && page.close) {
await safeClosePageReal(page); await safeClosePageReal(page);
} }
@ -101,10 +101,17 @@ export async function safeClosePage(item) {
} }
if (item?.browser_context) { 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) { } 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); date.setSeconds(date.getSeconds() - seconds);
return date.toUTCString(); 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;
}
}