-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpopup.js
More file actions
80 lines (68 loc) · 2.19 KB
/
popup.js
File metadata and controls
80 lines (68 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const tabSelector = document.getElementById("tabSelector");
const scanBtn = document.getElementById("scanBtn");
const resultsDiv = document.getElementById("results");
const themeToggle = document.getElementById("themeToggle");
const filterInput = document.getElementById("filter");
let allResults = [];
function showResults(results) {
resultsDiv.innerHTML = "";
const keyword = filterInput.value.toLowerCase();
const filtered = results.filter(r => r.toLowerCase().includes(keyword));
if (filtered.length === 0) {
resultsDiv.innerHTML = "<em>No matching results.</em>";
return;
}
filtered.forEach((res) => {
const div = document.createElement("div");
div.textContent = res;
resultsDiv.appendChild(div);
});
}
// Load all tabs
chrome.tabs.query({}, (tabs) => {
tabs.forEach((tab) => {
const option = document.createElement("option");
option.value = tab.id;
option.textContent = tab.title || tab.url;
tabSelector.appendChild(option);
});
});
// Scan selected tab
scanBtn.addEventListener("click", () => {
const tabId = parseInt(tabSelector.value);
chrome.runtime.sendMessage({ type: "scan-tab", tabId });
resultsDiv.innerHTML = "<em>Scanning...</em>";
});
// Keyword filtering in real time
filterInput.addEventListener("input", () => {
showResults(allResults);
});
// Show results
chrome.runtime.onMessage.addListener((msg) => {
if (msg.type === "results-updated") {
allResults.push(...msg.data);
allResults = [...new Set(allResults)];
showResults(allResults);
}
});
// Load previous results
chrome.runtime.sendMessage({ type: "get-last-results" }, (response) => {
if (response?.data?.length) {
allResults = response.data;
showResults(allResults);
} else {
resultsDiv.innerHTML = "<em>No results yet.</em>";
}
});
// Dark mode toggle
themeToggle.addEventListener("change", () => {
const dark = themeToggle.checked;
document.body.className = dark ? "dark" : "light";
localStorage.setItem("darkMode", dark);
});
// Apply saved theme
document.addEventListener("DOMContentLoaded", () => {
const dark = localStorage.getItem("darkMode") === "true";
themeToggle.checked = dark;
document.body.className = dark ? "dark" : "light";
});