All the things

This commit is contained in:
2025-01-25 22:42:04 -06:00
parent d556823350
commit 0db1065d10
16 changed files with 678 additions and 55 deletions

47
extension/background.js Normal file
View File

@@ -0,0 +1,47 @@
console.log("Background script loaded");
async function isContentScriptReady(tabId) {
try {
await browser.tabs.sendMessage(tabId, { type: "PING" });
return true;
} catch (error) {
return false;
}
}
async function waitForContentScript(tabId, maxAttempts = 10) {
console.log(`Waiting for content script in tab ${tabId}`);
for (let i = 0; i < maxAttempts; i++) {
if (await isContentScriptReady(tabId)) {
console.log(`Content script ready in tab ${tabId}`);
return true;
}
console.log(`Attempt ${i + 1}: Content script not ready, waiting...`);
await new Promise(resolve => setTimeout(resolve, 500));
}
console.log(`Content script not ready after ${maxAttempts} attempts`);
return false;
}
async function sendMessageToTab(tabId) {
try {
console.log(`Checking content script status for tab ${tabId}`);
if (await waitForContentScript(tabId)) {
console.log(`Sending GET_PAGE_CONTENT message to tab ${tabId}`);
await browser.tabs.sendMessage(tabId, {
type: "GET_PAGE_CONTENT"
});
console.log(`Successfully sent message to tab ${tabId}`);
}
} catch (error) {
console.error(`Error sending message to tab ${tabId}:`, error);
}
}
browser.webNavigation.onCompleted.addListener(async (details) => {
console.log("Navigation completed", details);
if (details.frameId === 0) { // Only handle main frame navigation
console.log(`Main frame navigation detected for tab ${details.tabId}`);
await sendMessageToTab(details.tabId);
}
});