upgrade to manifest_version v3

This commit is contained in:
bob.rao
2023-04-22 11:42:05 +08:00
parent e6809833c9
commit 8ac1adabdc
3 changed files with 67 additions and 34 deletions

View File

@@ -66,7 +66,21 @@ async function bulkDeleteConversations() {
if (confirmButton) { if (confirmButton) {
console.log("点击确认按钮...") console.log("点击确认按钮...")
confirmButton.click(); confirmButton.click();
await new Promise(resolve => setTimeout(resolve, 1000)); // Add a delay of 1 second // await new Promise(resolve => setTimeout(resolve, 1000)); // Add a delay of 1 second
// 等待删除按钮消失
const deleteButtonDisappeared = new Promise((resolve) => {
const observer = new MutationObserver(() => {
if (!document.querySelector('.absolute.flex.right-1.z-10.text-gray-300.visible')) {
observer.disconnect();
resolve();
}
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
});
await deleteButtonDisappeared;
} }
} }
@@ -102,6 +116,12 @@ async function bulkDeleteConversations() {
} }
async function addCheckboxesWithState(checkedIndexes) { async function addCheckboxesWithState(checkedIndexes) {
// 移除现有的复选框
const existingCheckboxes = document.querySelectorAll('.conversation-checkbox');
existingCheckboxes.forEach((checkbox) => {
checkbox.remove();
});
// 在这里重新添加复选框 // 在这里重新添加复选框
const conversations = document.querySelectorAll('.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.hover\\:bg-\\[\\#2A2B32\\].cursor-pointer.break-all.hover\\:pr-4.group'); const conversations = document.querySelectorAll('.flex.py-3.px-3.items-center.gap-3.relative.rounded-md.hover\\:bg-\\[\\#2A2B32\\].cursor-pointer.break-all.hover\\:pr-4.group');
conversations.forEach((conversation, index) => { conversations.forEach((conversation, index) => {
@@ -122,6 +142,8 @@ async function addCheckboxesWithState(checkedIndexes) {
for (let i = 0; i < remainingCheckboxes.length; i++) { for (let i = 0; i < remainingCheckboxes.length; i++) {
remainingCheckboxes[i].dataset.index = i; remainingCheckboxes[i].dataset.index = i;
} }
return Promise.resolve();
} }
bulkDeleteConversations(); bulkDeleteConversations();

View File

@@ -1,24 +1,20 @@
{ {
"manifest_version": 2, "manifest_version": 3,
"name": "ChatGPT Bulk Delete", "name": "ChatGPT Bulk Delete",
"version": "1.0", "version": "1.0",
"description": "A Chrome extension to bulk delete ChatGPT conversations", "description": "A Chrome extension to bulk delete ChatGPT conversations",
"icons": { "icons": {
"48": "icon48.png" "48": "icon48.png"
}, },
"browser_action": { "action": {
"default_icon": "icon48.png", "default_icon": "icon48.png",
"default_popup": "popup.html", "default_popup": "popup.html",
"default_title": "Bulk Delete Conversations" "default_title": "Bulk Delete Conversations"
}, },
"permissions": [ "permissions": [
"activeTab", "scripting",
"storage" "activeTab"
], ],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [ "content_scripts": [
{ {
"matches": ["*://chat.openai.com/*"], "matches": ["*://chat.openai.com/*"],
@@ -26,4 +22,3 @@
} }
] ]
} }

View File

@@ -1,14 +1,30 @@
document.getElementById('add-checkboxes').addEventListener('click', () => { document.getElementById('add-checkboxes').addEventListener('click', () => {
chrome.tabs.executeScript({ file: 'addCheckboxes.js' }); chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ['addCheckboxes.js']
});
});
}); });
document.getElementById('bulk-delete').addEventListener('click', () => { document.getElementById('bulk-delete').addEventListener('click', () => {
chrome.tabs.executeScript({ file: 'bulkDeleteConversations.js' }); chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ['bulkDeleteConversations.js']
});
});
}); });
document.getElementById('remove-checkboxes').addEventListener('click', () => { document.getElementById('remove-checkboxes').addEventListener('click', () => {
chrome.tabs.executeScript({ file: 'removeCheckboxes.js' }); chrome.tabs.query({ active: true, currentWindow: true }, ([tab]) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ['removeCheckboxes.js']
}); });
});
});
// Update copyright year // Update copyright year
const currentYear = new Date().getFullYear(); const currentYear = new Date().getFullYear();