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 {
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 &&

View File

@ -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;
}
}