diff --git a/extension/background.js b/extension/background.js index 4698a04..3c550cc 100644 --- a/extension/background.js +++ b/extension/background.js @@ -531,6 +531,20 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { connect(); // We wait for status update in handleServerEvent }); + } else if (message.type === 'GET_VIDEO_STATE') { + const { tabId } = message; + if (!tabId) { + sendResponse({ error: 'No tabId provided' }); + return; + } + chrome.tabs.sendMessage(tabId, { type: 'GET_VIDEO_STATE' }, (res) => { + if (chrome.runtime.lastError) { + sendResponse({ error: chrome.runtime.lastError.message }); + } else { + sendResponse(res); + } + }); + return true; // Keep channel open } else if (message.type === 'CONTENT_EVENT') { if (sender.tab) { currentTabId = sender.tab.id; diff --git a/extension/content.js b/extension/content.js index fd0226a..904395e 100644 --- a/extension/content.js +++ b/extension/content.js @@ -146,6 +146,24 @@ tryMediaAction(EVENTS.PLAY); } } + + if (message.type === 'GET_VIDEO_STATE') { + const video = findVideo(); + if (video) { + sendResponse({ + paused: video.paused, + currentTime: video.currentTime, + duration: video.duration || 0, + readyState: video.readyState, + muted: video.muted, + playbackRate: video.playbackRate, + url: window.location.href, + id: video.id || 'none' + }); + } else { + sendResponse({ error: 'No video found' }); + } + } }); // Detect native events diff --git a/extension/popup.html b/extension/popup.html index 1c7965d..2397091 100644 --- a/extension/popup.html +++ b/extension/popup.html @@ -200,15 +200,12 @@
• Username helps others identify you.
+• Noise filtering hides tabs without videos.
+