staging #6
			
				
			
		
		
		
	| 
						 | 
					@ -46,22 +46,29 @@ const handleUpdateProductTabs = (data) => {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// const tracking = async () => {
 | 
					// const tracking = async () => {
 | 
				
			||||||
//     if (_INTERVAL_TRACKING_ID) {
 | 
					//     console.log('🚀 Tracking process started...');
 | 
				
			||||||
//         clearInterval(_INTERVAL_TRACKING_ID);
 | 
					 | 
				
			||||||
//         _INTERVAL_TRACKING_ID = null;
 | 
					 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     _INTERVAL_TRACKING_ID = setInterval(async () => {
 | 
					//     while (true) {
 | 
				
			||||||
 | 
					//         console.log('🔍 Scanning active bids...');
 | 
				
			||||||
//         const productTabs = _.flatMap(MANAGER_BIDS, 'children');
 | 
					//         const productTabs = _.flatMap(MANAGER_BIDS, 'children');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//         for (const apiBid of MANAGER_BIDS) {
 | 
				
			||||||
 | 
					//             if (apiBid.page_context) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//             console.log(`🎧 Listening to events for API Bid ID: ${apiBid.id}`);
 | 
				
			||||||
 | 
					//             await apiBid.listen_events();
 | 
				
			||||||
 | 
					//         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//         for (const productTab of productTabs) {
 | 
					//         for (const productTab of productTabs) {
 | 
				
			||||||
 | 
					//             console.log(`📌 Processing Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//             // Tìm parent context nếu chưa có
 | 
					//             // Tìm parent context nếu chưa có
 | 
				
			||||||
//             if (!productTab.parent_browser_context) {
 | 
					//             if (!productTab.parent_browser_context) {
 | 
				
			||||||
//                 const parent = _.find(MANAGER_BIDS, { id: productTab.web_bid.id });
 | 
					//                 const parent = _.find(MANAGER_BIDS, { id: productTab.web_bid.id });
 | 
				
			||||||
//                 productTab.parent_browser_context = parent?.browser_context;
 | 
					//                 productTab.parent_browser_context = parent?.browser_context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//                 if (!productTab.parent_browser_context) {
 | 
					//                 if (!productTab.parent_browser_context) {
 | 
				
			||||||
//                     console.log(`🔄 Waiting for parent process to start... (Product ID: ${productTab.id})`);
 | 
					//                     console.log(`⏳ Waiting for parent process to start... (Product ID: ${productTab.id})`);
 | 
				
			||||||
//                     continue;
 | 
					//                     continue;
 | 
				
			||||||
//                 }
 | 
					//                 }
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
| 
						 | 
					@ -74,6 +81,7 @@ const handleUpdateProductTabs = (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//             // Nếu URL thay đổi, điều hướng đến URL mới
 | 
					//             // Nếu URL thay đổi, điều hướng đến URL mới
 | 
				
			||||||
//             if (productTab.page_context.url() !== productTab.url) {
 | 
					//             if (productTab.page_context.url() !== productTab.url) {
 | 
				
			||||||
 | 
					//                 console.log(`🔄 Redirecting to new URL for Product ID: ${productTab.id}`);
 | 
				
			||||||
//                 await productTab.gotoLink();
 | 
					//                 await productTab.gotoLink();
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,7 +95,7 @@ const handleUpdateProductTabs = (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//             // Nếu chưa có first_bid (trạng thái chưa đặt giá)
 | 
					//             // Nếu chưa có first_bid (trạng thái chưa đặt giá)
 | 
				
			||||||
//             if (!productTab.first_bid) {
 | 
					//             if (!productTab.first_bid) {
 | 
				
			||||||
//                 console.log(`🎯 Tracking out-bid event for Product ID: ${productTab.id}`);
 | 
					//                 console.log(`🎯 Waiting for first bid for Product ID: ${productTab.id}`);
 | 
				
			||||||
//                 continue;
 | 
					//                 continue;
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,84 +108,18 @@ const handleUpdateProductTabs = (data) => {
 | 
				
			||||||
//             console.log(`🚀 Executing action for Product ID: ${productTab.id}`);
 | 
					//             console.log(`🚀 Executing action for Product ID: ${productTab.id}`);
 | 
				
			||||||
//             await productTab.action();
 | 
					//             await productTab.action();
 | 
				
			||||||
//         }
 | 
					//         }
 | 
				
			||||||
//     }, configs.AUTO_TRACKING_DELAY);
 | 
					
 | 
				
			||||||
 | 
					//         console.log('🧹 Cleaning up unused tabs...');
 | 
				
			||||||
 | 
					//         await clearLazyTab();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//         console.log('📊 Tracking work status...');
 | 
				
			||||||
 | 
					//         workTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//         console.log(`⏳ Waiting ${configs.AUTO_TRACKING_DELAY / 1000} seconds before the next iteration...`);
 | 
				
			||||||
 | 
					//         await delay(configs.AUTO_TRACKING_DELAY);
 | 
				
			||||||
 | 
					//     }
 | 
				
			||||||
// };
 | 
					// };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const tracking = async () => {
 | 
					 | 
				
			||||||
    console.log('🚀 Tracking process started...');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while (true) {
 | 
					 | 
				
			||||||
        console.log('🔍 Scanning active bids...');
 | 
					 | 
				
			||||||
        const productTabs = _.flatMap(MANAGER_BIDS, 'children');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (const apiBid of MANAGER_BIDS) {
 | 
					 | 
				
			||||||
            if (apiBid.page_context) continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            console.log(`🎧 Listening to events for API Bid ID: ${apiBid.id}`);
 | 
					 | 
				
			||||||
            await apiBid.listen_events();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (const productTab of productTabs) {
 | 
					 | 
				
			||||||
            console.log(`📌 Processing Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Tìm parent context nếu chưa có
 | 
					 | 
				
			||||||
            if (!productTab.parent_browser_context) {
 | 
					 | 
				
			||||||
                const parent = _.find(MANAGER_BIDS, { id: productTab.web_bid.id });
 | 
					 | 
				
			||||||
                productTab.parent_browser_context = parent?.browser_context;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (!productTab.parent_browser_context) {
 | 
					 | 
				
			||||||
                    console.log(`⏳ Waiting for parent process to start... (Product ID: ${productTab.id})`);
 | 
					 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Kết nối Puppeteer nếu chưa có page_context
 | 
					 | 
				
			||||||
            if (!productTab.page_context) {
 | 
					 | 
				
			||||||
                console.log(`🔌 Connecting to page for Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
                await productTab.puppeteer_connect();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Nếu URL thay đổi, điều hướng đến URL mới
 | 
					 | 
				
			||||||
            if (productTab.page_context.url() !== productTab.url) {
 | 
					 | 
				
			||||||
                console.log(`🔄 Redirecting to new URL for Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
                await productTab.gotoLink();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Kiểm tra nếu cần cập nhật trước khi gọi update()
 | 
					 | 
				
			||||||
            if (shouldUpdateProductTab(productTab)) {
 | 
					 | 
				
			||||||
                console.log(`🔄 Updating Product ID: ${productTab.id}...`);
 | 
					 | 
				
			||||||
                await productTab.update();
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                console.log(`⏳ Product ID: ${productTab.id} was updated recently. Skipping update.`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Nếu chưa có first_bid (trạng thái chưa đặt giá)
 | 
					 | 
				
			||||||
            if (!productTab.first_bid) {
 | 
					 | 
				
			||||||
                console.log(`🎯 Waiting for first bid for Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Nếu chưa đến giờ bid
 | 
					 | 
				
			||||||
            if (productTab.start_bid_time && !isTimeReached(productTab.start_bid_time)) {
 | 
					 | 
				
			||||||
                console.log(`⏳ Not yet time to bid. Skipping Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            console.log(`🚀 Executing action for Product ID: ${productTab.id}`);
 | 
					 | 
				
			||||||
            await productTab.action();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log('🧹 Cleaning up unused tabs...');
 | 
					 | 
				
			||||||
        await clearLazyTab();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log('📊 Tracking work status...');
 | 
					 | 
				
			||||||
        workTracking();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log(`⏳ Waiting ${configs.AUTO_TRACKING_DELAY / 1000} seconds before the next iteration...`);
 | 
					 | 
				
			||||||
        await delay(configs.AUTO_TRACKING_DELAY);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// const clearLazyTab = async () => {
 | 
					// const clearLazyTab = async () => {
 | 
				
			||||||
//     if (!browser) {
 | 
					//     if (!browser) {
 | 
				
			||||||
//         console.warn('⚠️ Browser is not available or disconnected.');
 | 
					//         console.warn('⚠️ Browser is not available or disconnected.');
 | 
				
			||||||
| 
						 | 
					@ -231,6 +173,91 @@ const tracking = async () => {
 | 
				
			||||||
//     }
 | 
					//     }
 | 
				
			||||||
// };
 | 
					// };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const tracking = async () => {
 | 
				
			||||||
 | 
					    console.log('🚀 Tracking process started...');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (true) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            console.log('🔍 Scanning active bids...');
 | 
				
			||||||
 | 
					            const productTabs = _.flatMap(MANAGER_BIDS, 'children');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Lắng nghe sự kiện của API bids (chạy song song)
 | 
				
			||||||
 | 
					            await Promise.allSettled(
 | 
				
			||||||
 | 
					                MANAGER_BIDS.filter((bid) => !bid.page_context).map((apiBid) => {
 | 
				
			||||||
 | 
					                    console.log(`🎧 Listening to events for API Bid ID: ${apiBid.id}`);
 | 
				
			||||||
 | 
					                    return apiBid.listen_events();
 | 
				
			||||||
 | 
					                }),
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Duyệt qua từng productTab
 | 
				
			||||||
 | 
					            await Promise.allSettled(
 | 
				
			||||||
 | 
					                productTabs.map(async (productTab) => {
 | 
				
			||||||
 | 
					                    console.log(`📌 Processing Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Xác định parent context
 | 
				
			||||||
 | 
					                    if (!productTab.parent_browser_context) {
 | 
				
			||||||
 | 
					                        const parent = _.find(MANAGER_BIDS, { id: productTab.web_bid.id });
 | 
				
			||||||
 | 
					                        productTab.parent_browser_context = parent?.browser_context;
 | 
				
			||||||
 | 
					                        if (!productTab.parent_browser_context) {
 | 
				
			||||||
 | 
					                            console.log(`⏳ Waiting for parent process... (Product ID: ${productTab.id})`);
 | 
				
			||||||
 | 
					                            return;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Kết nối Puppeteer nếu chưa có page_context
 | 
				
			||||||
 | 
					                    if (!productTab.page_context) {
 | 
				
			||||||
 | 
					                        console.log(`🔌 Connecting to page for Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					                        await productTab.puppeteer_connect();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Kiểm tra URL và điều hướng nếu cần
 | 
				
			||||||
 | 
					                    if (productTab.page_context.url() !== productTab.url) {
 | 
				
			||||||
 | 
					                        console.log(`🔄 Redirecting to new URL for Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					                        await productTab.gotoLink();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Cập nhật nếu cần thiết
 | 
				
			||||||
 | 
					                    if (shouldUpdateProductTab(productTab)) {
 | 
				
			||||||
 | 
					                        console.log(`🔄 Updating Product ID: ${productTab.id}...`);
 | 
				
			||||||
 | 
					                        await productTab.update();
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        console.log(`⏳ Product ID: ${productTab.id} was updated recently. Skipping update.`);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Chờ first bid
 | 
				
			||||||
 | 
					                    if (!productTab.first_bid) {
 | 
				
			||||||
 | 
					                        console.log(`🎯 Waiting for first bid for Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					                        return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Kiểm tra thời gian bid
 | 
				
			||||||
 | 
					                    if (productTab.start_bid_time && !isTimeReached(productTab.start_bid_time)) {
 | 
				
			||||||
 | 
					                        console.log(`⏳ Not yet time to bid. Skipping Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					                        return;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Thực thi hành động
 | 
				
			||||||
 | 
					                    console.log(`🚀 Executing action for Product ID: ${productTab.id}`);
 | 
				
			||||||
 | 
					                    await productTab.action();
 | 
				
			||||||
 | 
					                }),
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Dọn dẹp tab không dùng
 | 
				
			||||||
 | 
					            console.log('🧹 Cleaning up unused tabs...');
 | 
				
			||||||
 | 
					            await clearLazyTab();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Cập nhật trạng thái tracking
 | 
				
			||||||
 | 
					            console.log('📊 Tracking work status...');
 | 
				
			||||||
 | 
					            workTracking();
 | 
				
			||||||
 | 
					        } catch (error) {
 | 
				
			||||||
 | 
					            console.error('❌ Error in tracking loop:', error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        console.log(`⏳ Waiting ${configs.AUTO_TRACKING_DELAY / 1000} seconds before the next iteration...`);
 | 
				
			||||||
 | 
					        await delay(configs.AUTO_TRACKING_DELAY);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const clearLazyTab = async () => {
 | 
					const clearLazyTab = async () => {
 | 
				
			||||||
    if (!browser) {
 | 
					    if (!browser) {
 | 
				
			||||||
        console.warn('⚠️ Browser is not available or disconnected.');
 | 
					        console.warn('⚠️ Browser is not available or disconnected.');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ export class Bid {
 | 
				
			||||||
        if (!this.page_context) return;
 | 
					        if (!this.page_context) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            await this.page_context.waitForSelector('#pageContainer', { timeout: 10000 });
 | 
					            // await this.page_context.waitForSelector('#pageContainer', { timeout: 10000 });
 | 
				
			||||||
            console.log(`✅ Page fully loaded. Taking snapshot for Product ID: ${this.id}`);
 | 
					            console.log(`✅ Page fully loaded. Taking snapshot for Product ID: ${this.id}`);
 | 
				
			||||||
            takeSnapshot(this.page_context, this, 'working', CONSTANTS.TYPE_IMAGE.WORK);
 | 
					            takeSnapshot(this.page_context, this, 'working', CONSTANTS.TYPE_IMAGE.WORK);
 | 
				
			||||||
        } catch (error) {
 | 
					        } catch (error) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,8 +38,6 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!response.status) {
 | 
					        if (!response.status) {
 | 
				
			||||||
            // await this.handleReturnProductPage(page);
 | 
					 | 
				
			||||||
            // await safeClosePage(this);
 | 
					 | 
				
			||||||
            return { result: false, bid_price: 0 };
 | 
					            return { result: false, bid_price: 0 };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,7 +93,6 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!close_time || new Date(close_time).getTime() <= new Date().getTime()) {
 | 
					        if (!close_time || new Date(close_time).getTime() <= new Date().getTime()) {
 | 
				
			||||||
            console.log(`Product is close ${close_time} ❌`);
 | 
					            console.log(`Product is close ${close_time} ❌`);
 | 
				
			||||||
            // await safeClosePage(this);
 | 
					 | 
				
			||||||
            return { result: true, close_time };
 | 
					            return { result: true, close_time };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,10 +123,8 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
            await takeSnapshot(page, this, 'bid-success', CONSTANTS.TYPE_IMAGE.SUCCESS);
 | 
					            await takeSnapshot(page, this, 'bid-success', CONSTANTS.TYPE_IMAGE.SUCCESS);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        } catch (error) {
 | 
					        } catch (error) {
 | 
				
			||||||
            console.log({ error: error.message });
 | 
					 | 
				
			||||||
            console.log('❌ Timeout to loading');
 | 
					            console.log('❌ Timeout to loading');
 | 
				
			||||||
            await takeSnapshot(page, this, 'timeout to loading');
 | 
					            await takeSnapshot(page, this, 'timeout to loading');
 | 
				
			||||||
            // await safeClosePage(this);
 | 
					 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -140,8 +135,6 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async handleUpdateBid({ lot_id, close_time, name, current_price, reserve_price }) {
 | 
					    async handleUpdateBid({ lot_id, close_time, name, current_price, reserve_price }) {
 | 
				
			||||||
        // if (close_time && this.close_time == close_time) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const response = await updateBid(this.id, { lot_id, close_time, name, current_price, reserve_price: Number(reserve_price) || 0 });
 | 
					        const response = await updateBid(this.id, { lot_id, close_time, name, current_price, reserve_price: Number(reserve_price) || 0 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (response) {
 | 
					        if (response) {
 | 
				
			||||||
| 
						 | 
					@ -236,7 +229,6 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
            if (!resultPlaceBid) {
 | 
					            if (!resultPlaceBid) {
 | 
				
			||||||
                console.log('❌ Error occurred while placing the bid.');
 | 
					                console.log('❌ Error occurred while placing the bid.');
 | 
				
			||||||
                await takeSnapshot(page, this, 'place-bid-action');
 | 
					                await takeSnapshot(page, this, 'place-bid-action');
 | 
				
			||||||
                // await safeClosePage(this);
 | 
					 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -245,7 +237,6 @@ export class GraysProductBid extends ProductBid {
 | 
				
			||||||
            await this.handleReturnProductPage(page);
 | 
					            await this.handleReturnProductPage(page);
 | 
				
			||||||
        } catch (error) {
 | 
					        } catch (error) {
 | 
				
			||||||
            console.error(`🚨 Error navigating the page: ${error.message}`);
 | 
					            console.error(`🚨 Error navigating the page: ${error.message}`);
 | 
				
			||||||
            // safeClosePage(this);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue