let backgroundPage = browser.extension.getBackgroundPage(); //let tab; const pass_data = {data:"urls",tab:"tab_id"} let data; //on addon click load extension page // let i=0; data = readUrl() .then(function(data){ browser.browserAction.onClicked.addListener(function(event1){ browser.tabs.create({"url": "home.html"},function(tab){ browser.runtime.onMessage.addListener(function(request,sender,sendResponse){ handleMessages(request,sender,sendResponse,tab,data); }); }); }); }); function handleMessages(message,sender,sendResponse,tab,data){ if(message === "Button_clicked") { browser.tabs.executeScript(tab.id,{ file:"spawn.js" }); console.log("pass tab data to run, in promise"); console.log(tab); console.log(data); //nextUrl(data,tab,i); } else if(message === "Content_Loaded") { console.log("Background: Received Content_Loaded"); // nextUrl(data,tab,i); if(i===0) { browser.tabs.sendMessage(tab.id,"Init"); } else { browser.tabs.sendMessage(tab.id,data.subscriptions[i].url); } } else if(message === "finished") { i++; console.log("background: received next from spawn.js"); browser.tabs.update(tab.id,{url : data.subscriptions[i].url}); browser.tabs.executeScript(tab.id,{ file:"spawn.js" }); browser.tabs.sendMessage(tab.id,data.subscriptions[i].url); } } ///////////////////// async function nextUrl(data,tab,i) { let count_urls = data.subscriptions.length; for(i=0;i{ setTimeout(() => { console.log(tab.url); if(tab.url === url){ console.log("Resolved wait for tab)"); resolve(); } },5000); }); } function sendMessageToContent(data,tab,i) { return new Promise(resolve => { browser.tabs.executeScript(tab.id,{ file:"spawn.js" }) .then(function() { console.log("background.js: received start signal..."); if(i == 0) { browser.tabs.sendMessage(tab.id,{state: "Init",url: data.subscriptions[0].url}) .then((response) => { console.log("got response!! content should reload"); console.log(response); resolve(); }); } else { browser.tabs.sendMessage(tab.id,{state: i,url: data.subscriptions[i].url}) .then((response) => { console.log(response); resolve(); }); } }); }); } function readUrl() { let data; return new Promise(resolve => { const filePath = "newpipe_subscriptions_202403101004.json"; var localURL = browser.extension.getURL(filePath); fetch(localURL).then((res) => { if(!res.ok){ throw new Error (`res error`); } return res.json(); }) .then((data) => { for(let i=0;i console.error("couldnt fetch data",error)); }); }