Skip to content

Commit 30c23e7

Browse files
committed
Updates to support manifest v3
1 parent 8046be0 commit 30c23e7

File tree

8 files changed

+531
-607
lines changed

8 files changed

+531
-607
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
- "*"
88

99
jobs:
10-
build:
10+
test:
1111
runs-on: ubuntu-latest
1212
defaults:
1313
run:

chromeExtension/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gotdibbs-toolbox",
3-
"version": "2022.1",
3+
"version": "2022.1.1",
44
"description": "Admin tools for Dynamics 365/CRM",
55
"main": "index.js",
66
"scripts": {
Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,38 @@
1-
// Called when the user clicks on the browser action.
2-
chrome.browserAction.onClicked.addListener((tab) => {
3-
chrome.tabs.executeScript({ code: 'window.GOTDIBBS_LOADED' }, (result) => {
4-
if (result[0]) {
5-
chrome.tabs.sendMessage(tab.id, {
6-
type: 'LAUNCH_TOOLBOX'
7-
});
8-
}
9-
else {
10-
// Preload CSS
11-
chrome.tabs.insertCSS(tab.id, {
12-
file: 'toolkit.css'
13-
});
14-
15-
chrome.tabs.executeScript(tab.id, {
16-
file: 'honeybadger.min.js'
17-
}, () => {
18-
chrome.tabs.executeScript(tab.id, {
19-
file: 'launcher.js'
20-
});
21-
});
22-
}
23-
});
1+
function getLoaded() {
2+
return window.GOTDIBBS_LOADED;
3+
}
4+
5+
// Called when the user clicks on the browser action.
6+
chrome.action.onClicked.addListener((tab) => {
7+
const defaultEventProps = {
8+
target: { tabId: tab.id }
9+
};
10+
11+
chrome.scripting.executeScript({
12+
...defaultEventProps,
13+
func: getLoaded
14+
}, (result) => {
15+
if (result[0].result) {
16+
chrome.tabs.sendMessage(tab.id, {
17+
type: 'LAUNCH_TOOLBOX'
18+
});
19+
}
20+
else {
21+
// Preload CSS
22+
chrome.scripting.insertCSS({
23+
...defaultEventProps,
24+
files: ['toolkit.css']
25+
});
26+
27+
chrome.scripting.executeScript({
28+
...defaultEventProps,
29+
files: ['honeybadger.min.js']
30+
}, () => {
31+
chrome.scripting.executeScript({
32+
...defaultEventProps,
33+
files: ['launcher.js']
34+
});
35+
});
36+
}
37+
});
2438
});

chromeExtension/public/launcher.js

Lines changed: 0 additions & 100 deletions
This file was deleted.

chromeExtension/src/launcher.js

Lines changed: 99 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,100 @@
1-
import Package from '../package.json';
2-
3-
var _sourceHtml = null;
4-
5-
function injectScript(file, scriptType = 'text/javascript') {
6-
return new Promise((resolve, reject) => {
7-
let scriptTag = document.createElement('script');
8-
9-
scriptTag.setAttribute('type', scriptType);
10-
scriptTag.setAttribute('src', file);
11-
12-
scriptTag.onload = () => {
13-
scriptTag.remove();
14-
resolve();
15-
};
16-
17-
scriptTag.onerror = reject;
18-
19-
(document.head || document.documentElement).appendChild(scriptTag);
20-
});
21-
}
22-
23-
async function injectToolbox() {
24-
return await injectScript(chrome.extension.getURL('toolkit.js'), 'module');
25-
}
26-
27-
function sendMessage(type, content) {
28-
let message = new CustomEvent('gotdibbs-toolbox', {
29-
detail: {
30-
type,
31-
content
32-
}
33-
});
34-
35-
message.initEvent('gotdibbs-toolbox', false, false);
36-
37-
document.dispatchEvent(message);
38-
}
39-
40-
async function requestLaunchToolbox(version) {
41-
if (document.querySelector('[data-hook="gotdibbs-toolbox-root"]')) {
42-
sendMessage('LAUNCH_TOOLBOX');
43-
return;
44-
}
45-
46-
try {
47-
injectToolbox();
48-
}
49-
catch (e) {
50-
console.error('Failed to load toolkit HTML');
51-
console.error(e);
52-
Honeybadger && Honeybadger.notify(e, {
53-
message: 'Failed to load toolkit HTML'
54-
});
55-
}
56-
}
57-
58-
// Handles messages coming from the Chrome Extension Layer (background.js)
59-
function handleBackgroundMessage(e) {
60-
switch (e.type) {
61-
case 'LAUNCH_TOOLBOX':
62-
requestLaunchToolbox();
63-
break;
64-
}
65-
}
66-
67-
function attachListeners() {
68-
chrome.runtime.onMessage.addListener(handleBackgroundMessage);
69-
}
70-
71-
function load() {
72-
// Handle errors that occur inside our sandbox
73-
Honeybadger.configure({
74-
apiKey: '3783205f',
75-
environment: 'production',
76-
revision: Package.version,
77-
onerror: false,
78-
onunhandledrejection: false
79-
});
80-
81-
Honeybadger.setContext({
82-
source: 'chrome_extension'
83-
});
84-
85-
Honeybadger.wrap(function () {
86-
attachListeners();
87-
88-
requestLaunchToolbox();
89-
})();
90-
}
91-
92-
// Tag that we've loaded the app for benefit of background.js
93-
window.GOTDIBBS_LOADED = true;
94-
95-
if (document.readyState === 'complete') {
96-
load();
97-
}
98-
else {
99-
window.addEventListener('load', load);
1+
import Package from '../package.json';
2+
3+
var _sourceHtml = null;
4+
5+
function injectScript(file, scriptType = 'text/javascript') {
6+
return new Promise((resolve, reject) => {
7+
let scriptTag = document.createElement('script');
8+
9+
scriptTag.setAttribute('type', scriptType);
10+
scriptTag.setAttribute('src', file);
11+
12+
scriptTag.onload = () => {
13+
scriptTag.remove();
14+
resolve();
15+
};
16+
17+
scriptTag.onerror = reject;
18+
19+
(document.head || document.documentElement).appendChild(scriptTag);
20+
});
21+
}
22+
23+
async function injectToolbox() {
24+
return await injectScript(chrome.runtime.getURL('toolkit.js'), 'module');
25+
}
26+
27+
function sendMessage(type, content) {
28+
let message = new CustomEvent('gotdibbs-toolbox', {
29+
detail: {
30+
type,
31+
content
32+
}
33+
});
34+
35+
message.initEvent('gotdibbs-toolbox', false, false);
36+
37+
document.dispatchEvent(message);
38+
}
39+
40+
async function requestLaunchToolbox(version) {
41+
if (document.querySelector('[data-hook="gotdibbs-toolbox-root"]')) {
42+
sendMessage('LAUNCH_TOOLBOX');
43+
return;
44+
}
45+
46+
try {
47+
injectToolbox();
48+
}
49+
catch (e) {
50+
console.error('Failed to load toolkit HTML');
51+
console.error(e);
52+
Honeybadger && Honeybadger.notify(e, {
53+
message: 'Failed to load toolkit HTML'
54+
});
55+
}
56+
}
57+
58+
// Handles messages coming from the Chrome Extension Layer (background.js)
59+
function handleBackgroundMessage(e) {
60+
switch (e.type) {
61+
case 'LAUNCH_TOOLBOX':
62+
requestLaunchToolbox();
63+
break;
64+
}
65+
}
66+
67+
function attachListeners() {
68+
chrome.runtime.onMessage.addListener(handleBackgroundMessage);
69+
}
70+
71+
function load() {
72+
// Handle errors that occur inside our sandbox
73+
Honeybadger.configure({
74+
apiKey: '3783205f',
75+
environment: 'production',
76+
revision: Package.version,
77+
onerror: false,
78+
onunhandledrejection: false
79+
});
80+
81+
Honeybadger.setContext({
82+
source: 'chrome_extension'
83+
});
84+
85+
Honeybadger.wrap(function () {
86+
attachListeners();
87+
88+
requestLaunchToolbox();
89+
})();
90+
}
91+
92+
// Tag that we've loaded the app for benefit of background.js
93+
window.GOTDIBBS_LOADED = true;
94+
95+
if (document.readyState === 'complete') {
96+
load();
97+
}
98+
else {
99+
window.addEventListener('load', load);
100100
}

0 commit comments

Comments
 (0)