var BgVars = { arIsActive: true, hasVideos: false } async function main(){ if(Debug.debug) console.log("[uw-bg::main] setting up background script"); await Settings.init(); await Keybinds.init(); Keybinds.keybinds = await Keybinds.fetch(); // Poslušalci za dogodke | event listeners here // {===]///[-------------------------------------]\\\[===} browser.runtime.onMessage.addListener(_uwbg_rcvmsg); browser.tabs.onActivated.addListener(_uwbg_onTabSwitched); if(Debug.debug) console.log("[uw-bg::main] listeners registered"); } async function _uwbg_onTabSwitched(activeInfo){ BgVars.hasVideos = false; if(Debug.debug) console.log("[uw-bg::onTabSwitched] TAB CHANGED, GETTING INFO FROM MAIN TAB"); var tabId = activeInfo.tabId; // just for readability var videoFrameList = await Comms.sendToEach({"cmd":"has-videos"}, tabId); if(Debug.debug) console.log("[uw-bg::onTabSwitched] got list of frames and whether they have videos", videoFrameList); // Pogledamo, če kateri od okvirjev vsebuje video. Da omogočimo pojavno okno je zadosti že // en okvir z videom. // <===[///]----------------------------[\\\]===> // Check if any frame has a video in it. To enable the popup there only needs to be at least one, // but the popup controls all frames. var hasVideos = false; for(frame of videoFrameList){ hasVideos |= frame.response.hasVideos; } BgVars.hasVideos = hasVideos; Settings.reload(); // todo: change extension icon depending on whether there's a video on the page or not } async function _uwbg_registerVideo(tabId){ var tabs = await Comms.getActiveTab(); // če ukaz pride iz zavihka, na katerem se trenunto ne nahajamo, potem se za zahtevo ne brigamo // if command originated from a tab that's _not_ currently active, we ignore the request if(tabId != tabs[0].id){ if(Debug.debug){ console.log("[uw-bg::_uwbg_registerVideo] request didn't come from currently active tab, ignoring"); } return; } BgVars.hasVideos = true; // todo: change extension icon depending on whether there's a video on the page or not } function _uwbg_rcvmsg(message, sender, sendResponse){ if(Debug.debug){ console.log("[uw-bg::_uwbg_rcvmsg] received message", message, "from sender", sender); } message.sender = "uwbg"; message.receiver = "uw"; if(message.cmd == "has-videos"){ if(Debug.debug){ console.log("[uw-bg::_uwbg_rcvmsg] does this tab or any of its subframes have videos?", BgVars.hasVideos ); } var res = {response: {hasVideos: BgVars.hasVideos}}; if(BrowserDetect.firefox){ return Promise.resolve(res); } sendResponse(res); return true; } if(message.cmd == "get-config"){ var config = {}; config.videoAlignment = Settings.miscFullscreenSettings.videoFloat; config.arConf = {}; config.arConf.enabled_global = Settings.arDetect.enabled == "global"; if(Debug.debug) console.log("[uw-bg::_uwbg_rcvmsg] Keybinds.getKeybinds() returned this:", Keybinds.getKeybinds()); config.keyboardShortcuts = Keybinds.getKeybinds(); // predvidevajmo, da je enako. Če je drugače, bomo popravili ko dobimo odgovor // assume current is same as global & change that when you get response from content script config.arConf.enabled_current = Settings.arDetect.enabled == "global"; var res = {response: config} if(BrowserDetect.firefox){ return Promise.resolve(res); } sendMessage(res); return true; } if(message.cmd == "register-video"){ // dobili smo sporočilce, ki pravi: "hej jaz imam video, naredi cahen" — ampak preden naredimo cahen, // se je potrebno prepričati, da je sporočilce prišlo iz pravilnega zavihka. Trenutno odprt zavihek // lahko dobimo to. ID zavihka, iz katerega je prišlo sporočilo, se skriva v sender.tab.id // ~<><\\\][=================][///><>~ // we got a message that says: "hey I have a video, make a mark or something" — but before we do the // mark, we should check if the message has truly arrived from currently active tab. We can get the // id of currently active tab here. ID of the sender tab is ‘hidden’ in sender.tab.id. _uwbg_registerVideo(sender.tab.id); } } main();