Skip to content

Commit 0468157

Browse files
committed
Merge branch 'improve-messaging' into nice-ui
2 parents ad14f31 + 42d281e commit 0468157

2 files changed

Lines changed: 63 additions & 41 deletions

File tree

background.js

Lines changed: 16 additions & 19 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,21 +29,13 @@ 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
39-
function notifyDevtools(msg) {
40-
console.log('Background.js Sending Message', msg);
33+
function notifyDevtools(msgType, msg) {
34+
var packagedMessage = {};
35+
packagedMessage.msgType = msgType;
36+
packagedMessage.msg = msg;
4137
ports.forEach(function (port) {
42-
port.postMessage(msg);
38+
port.postMessage(packagedMessage);
4339
});
4440
}
4541

@@ -51,21 +47,22 @@ function getJsonResource(tabID) {
5147
xhr.onreadystatechange = function() {
5248
var isSolidus, errMsg;
5349
isSolidus = (xhr.getResponseHeader('X-Powered-By').match(/Solidus/i));
50+
notifyDevtools('info', xhr.getResponseHeader('X-Powered-By'));
5451
if (xhr.readyState === 4 && isSolidus) { // Is complete Solidus response?
5552
if(xhr.status !== 200){ // Check that Solidus response didn't fail
5653
errMsg = 'Failed to get Solidus context. Status: ' + xhr.status;
57-
notifyDevtools(JSON.parse('{"error":"' + errMsg + '"}'));
54+
notifyDevtools('error', errMsg);
5855
} else {
5956
try {
6057
// Send Solidus JSON to devpanel
61-
notifyDevtools(JSON.parse(xhr.responseText));
58+
notifyDevtools('context', JSON.parse(xhr.responseText));
6259
} catch (e) {
63-
notifyDevtools(JSON.parse('{"error":"' + e + '"}'));
60+
notifyDevtools('error', e);
6461
}
6562
}
6663
} else {
6764
errMsg = 'Looks like you\'re not inspecting a Solidus Page.';
68-
notifyDevtools(JSON.parse('{"error":"' + errMsg + '"}'));
65+
notifyDevtools('error', errMsg);
6966
}
7067
};
7168
xhr.send();

views/devpanel.js

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

1313
function processMainIncomingMessage(msg) {
14-
console.log('Devpanel Processing Message', msg);
15-
if (msg.hasOwnProperty('page')) {
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);
20-
} else {
21-
inspector = new InspectorJSON({
22-
element: 'pagecontext',
23-
url: msg.url.path,
24-
json: msg
25-
});
26-
}
27-
} else if (msg.hasOwnProperty('error')) {
28-
if (inspector instanceof InspectorJSON) {
29-
inspector.destroy();
30-
}
31-
displayMessage(msg.error);
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);
3234
} else {
33-
console.log('Message Not Processed', msg);
35+
inspector = new InspectorJSON({
36+
element: 'pagecontext',
37+
url: context.url.path,
38+
json: context
39+
});
3440
}
3541
}
3642

37-
function displayMessage(msg) {
38-
document.querySelector('#messageholder').innerHTML = msg;
39-
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;
4065
}
4166

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

0 commit comments

Comments
 (0)