function loadGlobalsThenExecute(tabId, secondaryScript, callback) { chrome.scripting.executeScript( { target: { tabId: tabId }, files: ["globals.js", "utils.js"], }, () => { chrome.scripting.executeScript( { target: { tabId: tabId }, files: [secondaryScript], }, callback ); } ); } function addButtonListener(buttonId, scriptName) { document.getElementById(buttonId).addEventListener("click", () => { chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => { if (tab) { if (buttonId === "bulk-delete") { const bulkDeleteButton = document.getElementById(buttonId); bulkDeleteButton.disabled = true; bulkDeleteButton.classList.add("progress"); loadGlobalsThenExecute(tab.id, scriptName); } else { loadGlobalsThenExecute(tab.id, scriptName); } } }); }); } function updateProgressBar(buttonId, progress) { console.log(`Updating progress bar for ${buttonId}:`, progress); const button = document.getElementById(buttonId); button.classList.add("progress"); button.style.setProperty("--progress", `${progress}%`); button.setAttribute("data-progress", progress); const buttonText = buttonId === "bulk-delete" ? "Bulk Delete" : "Bulk Archive"; const actionText = buttonId === "bulk-delete" ? "Deleting" : "Archiving"; if (progress === 100) { button.disabled = true; button.innerHTML = ` 100% ${actionText} Complete `; // 显示 100% 一段时间后恢复原始状态 setTimeout(() => { button.disabled = false; button.classList.remove("progress"); button.innerHTML = `${buttonText}`; }, 500); // 1000 毫秒 = 1 秒,您可以根据需要调整这个时间 } else { button.disabled = true; button.innerHTML = ` ${progress}% ${actionText}... `; } } // 在消息监听器中也添加文本重置 chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { console.log("Received message:", request); if (request.action === "updateProgress") { updateProgressBar(request.buttonId, request.progress); } else if (request.action === "operationComplete") { const button = document.getElementById(request.buttonId); button.disabled = false; button.classList.remove("progress"); updateProgressBar(request.buttonId, 100); } }); function initializeButtons() { addButtonListener("add-checkboxes", "addCheckboxes.js"); addButtonListener("bulk-delete", "bulkDeleteConversations.js"); addButtonListener("toggle-checkboxes", "toggleCheckboxes.js"); addButtonListener("remove-checkboxes", "removeCheckboxes.js"); const bulkArchiveButton = document.getElementById("bulk-archive"); bulkArchiveButton.addEventListener("click", handleBulkArchive); } // Payment logic removed - bulk archive is now free async function checkMembershipStatus() { // Removed payment checking logic updateBulkArchiveButton(true); // Always enable bulk archive } function updateBulkArchiveButton(isPaid) { const bulkArchiveButton = document.getElementById("bulk-archive"); // Always enable bulk archive (no lock icon) bulkArchiveButton.querySelector("span").textContent = ""; } async function handleBulkArchive() { // Removed payment requirements - bulk archive is now free for everyone chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => { if (tab) { const bulkArchiveButton = document.getElementById("bulk-archive"); bulkArchiveButton.disabled = true; bulkArchiveButton.classList.add("progress"); loadGlobalsThenExecute(tab.id, "bulkArchiveConversations.js"); } }); } // function updateCopyrightYear() { // const currentYear = new Date().getFullYear(); // document.getElementById( // "copyright" // ).innerHTML = `© ${currentYear} qcrao@GitHub`; // } document.addEventListener("DOMContentLoaded", function () { initializeButtons(); // updateCopyrightYear(); checkMembershipStatus(); }); // 每次打开popup时检查会员状态 chrome.runtime.onConnect.addListener(function (port) { if (port.name === "popup") { port.onDisconnect.addListener(function () { checkMembershipStatus(); }); } });