Skip to content

Commit 42d281e

Browse files
committed
refactor messaging
1 parent 855bee0 commit 42d281e

2 files changed

Lines changed: 55 additions & 38 deletions

File tree

background.js

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ chrome.runtime.onConnect.addListener(function (port) {
1414
if (i !== -1) ports.splice(i, 1);
1515
});
1616
port.onMessage.addListener(function (msg) {
17-
console.log('Background.js Recieved Message', msg);
18-
processBackgroundIncomingMessage(msg);
17+
if (msg.tabId) {
18+
tabInspected = msg.tabId;
19+
getJsonResource(tabInspected);
20+
} else {
21+
console.log(msg);
22+
}
1923
});
2024
});
2125

@@ -25,19 +29,9 @@ chrome.tabs.onUpdated.addListener(function (tabId, changes) {
2529
}
2630
});
2731

28-
function processBackgroundIncomingMessage(msg) {
29-
console.log('Processing Message in Background', msg);
30-
if (msg.tabId) {
31-
tabInspected = msg.tabId;
32-
getJsonResource(tabInspected);
33-
} else {
34-
console.log(msg);
35-
}
36-
}
37-
3832
// Function to send a message to main.js
3933
function notifyDevtools(msgType, msg) {
40-
var packagedMessage = new Object();
34+
var packagedMessage = {};
4135
packagedMessage.msgType = msgType;
4236
packagedMessage.msg = msg;
4337
ports.forEach(function (port) {
@@ -53,6 +47,7 @@ function getJsonResource(tabID) {
5347
xhr.onreadystatechange = function() {
5448
var isSolidus, errMsg;
5549
isSolidus = (xhr.getResponseHeader('X-Powered-By').match(/Solidus/i));
50+
notifyDevtools('info', xhr.getResponseHeader('X-Powered-By'));
5651
if (xhr.readyState === 4 && isSolidus) { // Is complete Solidus response?
5752
if(xhr.status !== 200){ // Check that Solidus response didn't fail
5853
errMsg = 'Failed to get Solidus context. Status: ' + xhr.status;
@@ -61,7 +56,6 @@ function getJsonResource(tabID) {
6156
try {
6257
// Send Solidus JSON to devpanel
6358
notifyDevtools('context', JSON.parse(xhr.responseText));
64-
notifyDevtools('status', 'The x-powered-by header is' + xhr.getResponseHeader('X-Powered-By'));
6559
} catch (e) {
6660
notifyDevtools('error', e);
6761
}

views/devpanel.js

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,57 @@
1111
var inspector;
1212

1313
function processMainIncomingMessage(msg) {
14-
console.log('Devpanel Processing Message', msg);
15-
if (msg.msgType === 'context') {
16-
displayMessage('Looks like a Solidus page!');
17-
//Check if there is an initialized InspectorJSON that hasn't been destroyed
18-
if ((inspector instanceof InspectorJSON) && (inspector.page)) {
19-
inspector.view(msg.msg);
20-
} else {
21-
inspector = new InspectorJSON({
22-
element: 'pagecontext',
23-
url: msg.msg.url.path,
24-
json: msg.msg
25-
});
26-
}
27-
} else if (msg.msgType === 'error') {
28-
if (inspector instanceof InspectorJSON) {
29-
inspector.destroy();
30-
}
31-
displayMessage(msg.msg);
32-
} else if (msg.msgType === 'status') {
33-
displayMessage(msg.msg);
14+
switch(msg.msgType) {
15+
case 'context':
16+
setupInspector(msg.msg);
17+
break;
18+
case 'error':
19+
destroyInspector();
20+
showAlert(msg.msg, 'Error:');
21+
//activateTab('info');
22+
break;
23+
case 'status':
24+
updateStatus(msg.msg);
25+
break;
26+
default:
27+
console.log('Unhandled Message', msg);
28+
}
29+
}
30+
31+
function setupInspector(context) {
32+
if ((inspector instanceof InspectorJSON) && (inspector.page)) {
33+
inspector.view(context);
3434
} else {
35-
console.log('Message Not Processed', msg);
35+
inspector = new InspectorJSON({
36+
element: 'pagecontext',
37+
url: context.url.path,
38+
json: context
39+
});
3640
}
3741
}
3842

39-
function displayMessage(msg) {
40-
document.querySelector('#messageholder').innerHTML = msg;
41-
console.log('Updated Panel With Message', msg);
43+
function destroyInspector() {
44+
if (inspector instanceof InspectorJSON) {
45+
inspector.destroy();
46+
}
47+
}
48+
49+
function createAlert(info, label, alertClass) { //Create a Bootstrap HTML alert
50+
var infoClass = alertClass?alertClass:'alert-info';
51+
var infoLabel = label?'<strong>' + label +'</strong> ':'';
52+
return '<div class="alert ' + infoClass +
53+
' alert-dismissible" role="alert"><button type="button" class="close"' +
54+
' data-dismiss="alert"><span aria-hidden="true">&times;</span>' +
55+
'<span class="sr-only">Close</span></button>' + infoLabel + info + '</div>';
56+
}
57+
58+
function showAlert(message, label, alertClass){ //Show an alert
59+
var theAlert = createAlert(message, label, alertClass);
60+
document.querySelector('#messageholder').innerHTML += theAlert;
61+
}
62+
63+
function updateStatus(status) { //Update status panel in footer
64+
document.querySelector('#pluginstatus').innerHTML = status;
4265
}
4366

4467
var socket = io('http://localhost:8081');

0 commit comments

Comments
 (0)