Fix processing of Clara.io status messages

This commit is contained in:
David Rowe 2017-01-13 11:20:00 +13:00
parent 4dee0efdd3
commit 6f2386eabd

View file

@ -172,29 +172,46 @@
xmlHttpRequest = new XMLHttpRequest(); xmlHttpRequest = new XMLHttpRequest();
var responseTextIndex = 0; var responseTextIndex = 0;
var statusMessage = "";
var zipFileURL = ""; var zipFileURL = "";
xmlHttpRequest.onreadystatechange = function () { xmlHttpRequest.onreadystatechange = function () {
// Messages are appended to responseText; process the new one. // Messages are appended to responseText; process the new ones.
var message = this.responseText.slice(responseTextIndex); var message = this.responseText.slice(responseTextIndex);
var statusMessage = "";
if (isDownloading && message.slice(0, 5) === "data:") { // Ignore messages in flight after finished/cancelled. if (isDownloading) { // Ignore messages in flight after finished/cancelled.
var data = JSON.parse(message.slice(5)); var lines = message.split(/[\n\r]+/);
// Extract status message. for (var i = 0, length = lines.length; i < length; i++) {
if (data.hasOwnProperty("message") && data.message !== null) { if (lines[i].slice(0, 5) === "data:") {
statusMessage = data.message; // Parse line.
console.log("Clara.io FBX: " + statusMessage); var data;
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage); try {
data = JSON.parse(lines[i].slice(5));
}
catch (e) {
data = {};
}
// Extract status message.
if (data.hasOwnProperty("message") && data.message !== null) {
statusMessage = data.message;
console.log("Clara.io FBX: " + statusMessage);
}
// Extract zip file URL.
if (data.hasOwnProperty("files") && data.files.length > 0) {
zipFileURL = data.files[0].url;
if (zipFileURL.slice(-4) !== ".zip") {
console.log(JSON.stringify(data)); // Data for debugging.
}
}
}
} }
// Extract zip file URL. if (statusMessage !== "") {
if (data.hasOwnProperty("files") && data.files.length > 0) { // Update the UI with the most recent status message.
zipFileURL = data.files[0].url; EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
if (zipFileURL.slice(-4) !== ".zip") {
console.log(JSON.stringify(data)); // Data for debugging.
}
} }
} }
@ -204,6 +221,7 @@
// Note: onprogress doesn't have computable total length. // Note: onprogress doesn't have computable total length.
xmlHttpRequest.onload = function () { xmlHttpRequest.onload = function () {
var statusMessage = "";
if (!isDownloading) { if (!isDownloading) {
return; return;