Merge pull request from cwillisf/fix-extension-load-timing

Ensure extensions don't load until editor is ready
This commit is contained in:
Chris Willis-Ford 2017-03-16 13:07:34 -07:00 committed by GitHub
commit 91e8f08b5c

View file

@ -1,5 +1,6 @@
// Simulate the bare minimum of the view that exists on the main site // Simulate the bare minimum of the view that exists on the main site
var Scratch = Scratch || {}; var Scratch = Scratch || {};
Scratch.editorIsReady = false;
Scratch.FlashApp = Scratch.FlashApp || {}; Scratch.FlashApp = Scratch.FlashApp || {};
var editorId = "scratch"; var editorId = "scratch";
@ -8,7 +9,7 @@ var ShortURL = {
key : "AIzaSyBlaftRUIOLFVs8nfrWvp4IBrqq9-az46A", key : "AIzaSyBlaftRUIOLFVs8nfrWvp4IBrqq9-az46A",
api : "https://www.googleapis.com/urlshortener/v1/url", api : "https://www.googleapis.com/urlshortener/v1/url",
domain : "http://goo.gl" domain : "http://goo.gl"
} };
function handleEmbedStatus(e) { function handleEmbedStatus(e) {
$('#scratch-loader').hide(); $('#scratch-loader').hide();
@ -32,7 +33,7 @@ function JSthrowError(e) {
function JSeditorReady() { function JSeditorReady() {
try { try {
handleParameters(); Scratch.editorIsReady = true;
Scratch.FlashApp.$ASobj.trigger("editor:ready"); Scratch.FlashApp.$ASobj.trigger("editor:ready");
return true; return true;
} catch (error) { } catch (error) {
@ -41,46 +42,10 @@ function JSeditorReady() {
} }
} }
function JSprojectLoaded() {
loadExtensionQueue();
}
function JSshowExtensionDialog() { function JSshowExtensionDialog() {
showModal(["template-extension-file", "template-extension-url"]); showModal(["template-extension-file", "template-extension-url"]);
} }
var extensionQueue = [];
function handleParameters() {
var project;
var queryString = window.location.search.substring(1);
var queryVars = queryString.split(/[&;]/);
for (var i = 0; i < queryVars.length; i++) {
var nameVal = queryVars[i].split('=');
switch(nameVal[0]){
case 'ext':
extensionQueue.push(nameVal[1]);
break;
case 'proj':
project = nameVal[1];
break;
}
}
if (project) {
Scratch.FlashApp.ASobj.ASloadSBXFromURL(project);
}
else {
loadExtensionQueue();
}
}
function loadExtensionQueue() {
for (var i = 0; i < extensionQueue.length; ++i) {
var extensionURL = extensionQueue[i];
ScratchExtensions.loadExternalJS(extensionURL);
}
extensionQueue = [];
}
var flashVars = { var flashVars = {
autostart: 'false', autostart: 'false',
extensionDevMode: 'true', extensionDevMode: 'true',
@ -163,7 +128,7 @@ function sendFileToFlash(file) {
}); });
} }
} };
fileReader.readAsArrayBuffer(file); fileReader.readAsArrayBuffer(file);
} }
@ -177,7 +142,7 @@ function sendURLtoFlash() {
urls.push(arguments[i]); urls.push(arguments[i]);
} }
if (urls.length <= 0) return; if (urls.length <= 0) return;
if (Scratch.FlashApp.ASobj.ASloadGithubURL !== undefined) { if (Scratch.editorIsReady) {
$(document).trigger("editor:extensionLoaded", {method: "url", urls: urls}); $(document).trigger("editor:extensionLoaded", {method: "url", urls: urls});
showPage(editorId); showPage(editorId);
Scratch.FlashApp.ASobj.ASloadGithubURL(urls); Scratch.FlashApp.ASobj.ASloadGithubURL(urls);
@ -202,7 +167,6 @@ function loadFromURLParameter(queryString) {
*/ */
var paramString = queryString.replace(/^\?|\/$/g, ''); var paramString = queryString.replace(/^\?|\/$/g, '');
var vars = paramString.split("&"); var vars = paramString.split("&");
var showedEditor = false;
var urls = []; var urls = [];
for (var i=0; i<vars.length; i++) { for (var i=0; i<vars.length; i++) {
var pair = vars[i].split("="); var pair = vars[i].split("=");
@ -238,7 +202,7 @@ function getOrCreateFromTemplate(elementId, templateId, elementType, appendTo, w
$element.appendTo(appendTo) $element.appendTo(appendTo)
} }
return $element; return $element;
}; }
function showModal(templateId, data) { function showModal(templateId, data) {
/* /*
@ -405,7 +369,7 @@ function showShortUrl(url) {
var context = { var context = {
longUrl : data.longUrl, longUrl : data.longUrl,
shortUrl : shortUrl shortUrl : shortUrl
} };
$modal = showModal("template-short-url", context); $modal = showModal("template-short-url", context);
var client = new ZeroClipboard($('button', $modal)); var client = new ZeroClipboard($('button', $modal));
@ -417,7 +381,7 @@ function JSshowShortUrlFor() {
} }
function decompress(id, done) { function decompress(id, done) {
var data = {shortUrl: ShortURL.domain + id} var data = {shortUrl: ShortURL.domain + id};
$.ajax({ $.ajax({
url : ShortURL.api + '?' + $.param({ url : ShortURL.api + '?' + $.param({
key : ShortURL.key, key : ShortURL.key,
@ -452,7 +416,7 @@ $(document).on('click', "[data-action='load-url']", function(e) {
$(document).on('submit', ".url-load-form", function(e) { $(document).on('submit', ".url-load-form", function(e) {
// Load text input value on submit // Load text input value on submit
e.preventDefault() e.preventDefault();
showPage(editorId); showPage(editorId);
sendURLtoFlash($('input[type="text"]', this).val()); sendURLtoFlash($('input[type="text"]', this).val());
}); });