Skip to content

Commit fba8823

Browse files
committed
add chrome support
1 parent e94b9a3 commit fba8823

5 files changed

Lines changed: 95 additions & 44 deletions

File tree

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
all:
1+
all: build
2+
3+
build:
24
docker run --rm -v $(shell pwd):/app -w /app node:alpine npm i
35
docker run --rm -v $(shell pwd):/app -w /app node:alpine npx webpack --config webpack.config.js
46
docker run --rm -v $(shell pwd):/app -w /app node:alpine npx web-ext build -i package.json package-lock.json Makefile webpack.config.js dist/bundle.js.LICENSE.txt --overwrite-dest
57

68
clean:
79
rm -rf dist/ web-ext-artifacts node_modules
10+
11+
.PHONY: all build clean

contentScript.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ const darkModeMappingBackground = {
110110

111111
'rgba(0, 0, 0, 0)': '#fff0f3',
112112
'black': '#fff0f3',
113+
114+
// Chrome specific
115+
'-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(240, 240, 240)), to(rgb(224, 224, 224)))': '-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(50, 50, 50)), to(rgb(40, 40, 40)))',
116+
'-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(248, 248, 248)), to(rgb(255, 255, 255)))': '-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(34, 34, 34)), to(rgb(24, 24, 24)))',
113117
};
114118

115119

@@ -141,7 +145,15 @@ const borderColorMapping = {
141145
};
142146

143147
async function applyDarkMode() {
144-
const { darkMode } = await browser.storage.local.get('darkMode') || { darkMode: false };
148+
let result = {};
149+
if (typeof browser !== 'undefined') {
150+
result = await browser.storage.local.get('darkMode');
151+
} else if (typeof chrome !== 'undefined') {
152+
result = await new Promise(resolve => chrome.storage.local.get('darkMode', resolve));
153+
}
154+
155+
const darkMode = result.darkMode || false;
156+
145157
if (document.title !== 'RabbitMQ Management') {
146158
console.log('Not on RabbitMQ Management page, skipping dark mode');
147159
return;
@@ -189,6 +201,9 @@ async function applyDarkMode() {
189201
if (rule.style.borderColor && Object.keys(borderColorMapping).includes(rule.style.borderColor)) {
190202
rule.style.setProperty('border-color', borderColorMapping[rule.style.borderColor], 'important');
191203
}
204+
if (rule.style.background && Object.keys(darkModeMappingBackground).includes(rule.style.background)) {
205+
rule.style.setProperty('background', darkModeMappingBackground[rule.style.background], 'important');
206+
}
192207
if (rule.style.backgroundImage && Object.keys(darkModeMappingBackgroundImage).includes(rule.style.backgroundImage)) {
193208
rule.style.setProperty('background-image', darkModeMappingBackgroundImage[rule.style.backgroundImage], 'important');
194209
}

manifest.json

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,33 @@
11
{
2-
"manifest_version": 3,
3-
"name": "BunnyPack",
4-
"version": "2.0.1",
5-
"description": "Decode MessagePack encoded messages in RabbitMQ's web console.",
6-
"author": "nbr23",
7-
8-
"permissions": [
9-
"activeTab",
10-
"webNavigation",
11-
"storage"
2+
"manifest_version": 3,
3+
"name": "BunnyPack",
4+
"version": "2.0.1",
5+
"description": "Decode MessagePack encoded messages in RabbitMQ's web console.",
6+
"author": "nbr23",
7+
"permissions": [
8+
"activeTab",
9+
"webNavigation",
10+
"storage"
11+
],
12+
"browser_specific_settings": {
13+
"gecko": {
14+
"id": "bunny-pack@23.tf",
15+
"strict_min_version": "120.0",
16+
"update_url": "https://raw.githubusercontent.com/nbr23/bunny-pack/refs/heads/master/updates.json"
17+
}
18+
},
19+
"options_ui": {
20+
"page": "options.html",
21+
"open_in_tab": false
22+
},
23+
"content_scripts": [
24+
{
25+
"matches": [
26+
"<all_urls>"
1227
],
13-
"browser_specific_settings": {
14-
"gecko": {
15-
"id": "bunny-pack@23.tf",
16-
"strict_min_version": "120.0",
17-
"update_url": "https://raw.githubusercontent.com/nbr23/bunny-pack/refs/heads/master/updates.json"
18-
}
19-
},
20-
"options_ui": {
21-
"page": "options.html",
22-
"open_in_tab": false
23-
},
24-
"content_scripts": [
25-
{
26-
"matches": ["<all_urls>"],
27-
"js": ["./dist/bundle.js"]
28-
}
29-
]
30-
}
28+
"js": [
29+
"./dist/bundle.js"
30+
]
31+
}
32+
]
33+
}

options.js

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,46 @@ function showStatus(message, type) {
88
}, 3000);
99
}
1010

11-
document.addEventListener('DOMContentLoaded', async () => {
12-
const darkMode = await browser.storage.local.get('darkMode');
13-
const darkModeCheckbox = document.getElementById('dark-mode');
14-
darkModeCheckbox.checked = darkMode.darkMode || false;
15-
darkModeCheckbox.addEventListener('change', async () => {
16-
await browser.storage.local.set({ darkMode: darkModeCheckbox.checked });
17-
showStatus('Settings saved', 'success');
11+
async function getStorageData(key) {
12+
return new Promise((resolve) => {
13+
if (typeof browser !== 'undefined') {
14+
browser.storage.local.get(key).then(resolve);
15+
} else if (typeof chrome !== 'undefined') {
16+
chrome.storage.local.get(key, resolve);
17+
}
1818
});
19+
}
1920

20-
const saveButton = document.getElementById('save');
21-
saveButton.addEventListener('click', async () => {
22-
const darkMode = darkModeCheckbox.checked;
23-
await browser.storage.local.set({ darkMode });
24-
showStatus('Settings saved', 'success');
21+
async function setStorageData(data) {
22+
return new Promise((resolve) => {
23+
if (typeof browser !== 'undefined') {
24+
browser.storage.local.set(data).then(resolve);
25+
} else if (typeof chrome !== 'undefined') {
26+
chrome.storage.local.set(data, resolve);
27+
}
2528
});
29+
}
30+
31+
document.addEventListener('DOMContentLoaded', async () => {
32+
try {
33+
const darkModeData = await getStorageData('darkMode');
34+
const darkModeCheckbox = document.getElementById('dark-mode');
35+
darkModeCheckbox.checked = darkModeData.darkMode || false;
36+
37+
darkModeCheckbox.addEventListener('change', async () => {
38+
await setStorageData({ darkMode: darkModeCheckbox.checked });
39+
showStatus('Settings saved', 'success');
40+
});
41+
42+
const saveButton = document.getElementById('save');
43+
saveButton.addEventListener('click', async (event) => {
44+
event.preventDefault();
45+
const darkMode = darkModeCheckbox.checked;
46+
await setStorageData({ darkMode });
47+
showStatus('Settings saved', 'success');
48+
});
49+
} catch (error) {
50+
console.error('Error loading options:', error);
51+
showStatus('Error loading settings', 'error');
52+
}
2653
});

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "bunny-pack",
33
"version": "2.0.1",
4-
"description": "",
4+
"description": "Decode MessagePack encoded messages in RabbitMQ's web console.",
55
"license": "MIT",
66
"private": true,
77
"author": {
@@ -10,7 +10,9 @@
1010
"contributors": [],
1111
"dependencies": {
1212
"buffer": "^6.0.3",
13-
"msgpackr": "^1.10.1",
13+
"msgpackr": "^1.10.1"
14+
},
15+
"devDependencies": {
1416
"web-ext": "^7.11.0",
1517
"webpack": "^5.91.0",
1618
"webpack-cli": "^5.1.4"

0 commit comments

Comments
 (0)