diff --git a/scrobblers/chromium-generic/background.js b/scrobblers/chromium-generic/background.js index 441b941..71b896e 100644 --- a/scrobblers/chromium-generic/background.js +++ b/scrobblers/chromium-generic/background.js @@ -3,12 +3,12 @@ chrome.tabs.onUpdated.addListener(onTabUpdated); chrome.tabs.onRemoved.addListener(onTabRemoved); //chrome.tabs.onActivated.addListener(onTabChanged); -chrome.runtime.onMessage.addListener(onPlaybackUpdate); +chrome.runtime.onMessage.addListener(onInternalMessage); tabManagers = {} pages = { - "plex":{ + "Plex Web":{ "patterns":[ "https://app.plex.tv", "http://app.plex.tv", @@ -17,7 +17,7 @@ pages = { ], "script":"plex.js" }, - "youtube_music":{ + "YouTube Music":{ "patterns":[ "https://music.youtube.com", "http://music.youtube.com" @@ -84,15 +84,34 @@ function onTabRemoved(tabId,removeInfo) { -function onPlaybackUpdate(request,sender) { - tabId = sender.tab.id - //console.log("Message was sent from tab id " + tabId) - if (tabManagers.hasOwnProperty(tabId)) { - //console.log("This is managed! Seems to be " + tabManagers[tabId].page) - tabManagers[tabId].playbackUpdate(request) +function onInternalMessage(request,sender) { + // message from settings menu + if (request.type == "query") { + answer = []; + for (tabId in tabManagers) { + manager = tabManagers[tabId] + if (manager.currentlyPlaying) { + answer.push([manager.page,manager.currentArtist,manager.currentTitle]) + } + else { + answer.push([manager.page,null]) + } + } + chrome.runtime.sendMessage({"type":"response","content":answer}) } - //console.log("Got update from Plex Web!") + + //message from content script + if (request.type == "startPlayback" || request.type == "stopPlayback") { + tabId = sender.tab.id + //console.log("Message was sent from tab id " + tabId) + if (tabManagers.hasOwnProperty(tabId)) { + //console.log("This is managed! Seems to be " + tabManagers[tabId].page) + tabManagers[tabId].playbackUpdate(request) + + } + } + } diff --git a/scrobblers/chromium-generic/settings.html b/scrobblers/chromium-generic/settings.html index 53e7bf3..6c8995b 100644 --- a/scrobblers/chromium-generic/settings.html +++ b/scrobblers/chromium-generic/settings.html @@ -21,15 +21,22 @@ border: 0px solid; padding:2px; } + span { + line-height: 20px; + }
- Server:
+ Server:


- API key:
+ API key:
+

+ Tabs: + +
diff --git a/scrobblers/chromium-generic/settings.js b/scrobblers/chromium-generic/settings.js index c908656..9e63405 100644 --- a/scrobblers/chromium-generic/settings.js +++ b/scrobblers/chromium-generic/settings.js @@ -10,20 +10,53 @@ document.addEventListener("DOMContentLoaded",function() { document.getElementById("apikey").addEventListener("focusout",checkServer); + chrome.runtime.onMessage.addListener(onInternalMessage); + + chrome.storage.local.get({"serverurl":"http://localhost:42010"},function(result) { document.getElementById("serverurl").value = result["serverurl"] - checkServer() + checkServerMaybe() }); chrome.storage.local.get({"apikey":"BlackPinkInYourArea"},function(result) { document.getElementById("apikey").value = result["apikey"] - checkServer() + checkServerMaybe() }); + chrome.runtime.sendMessage({"type":"query"}) + }); +//this makes sure only the second call actually makes a request (the first request is pointless +//when the other element isn't filled yet and might actually overwrite the correct result because +//of a race condition) +var done = 0 +function checkServerMaybe() { + done++; + if (done == 2) { + checkServer() + } +} + +function onInternalMessage(request,sender) { + if (request.type == "response") { + players = request.content + html = ""; + for (var i=0;i