DEV-2350: Prevent duplicate default scripts from running

This commit is contained in:
Zach Fox 2019-10-08 14:48:19 -04:00
parent 72c60b92c2
commit 9feab869ad

View file

@ -71,23 +71,63 @@ if (Menu.menuExists(MENU_CATEGORY) && !Menu.menuItemExists(MENU_CATEGORY, MENU_I
} }
function loadSeparateDefaults() { function loadSeparateDefaults() {
var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
for (var i in DEFAULT_SCRIPTS_SEPARATE) { for (var i in DEFAULT_SCRIPTS_SEPARATE) {
Script.load(DEFAULT_SCRIPTS_SEPARATE[i]); var shouldLoadCurrentDefaultScript = true;
for (var j = 0; j < currentlyRunningScripts.length; j++) {
var currentRunningScriptObject = currentlyRunningScripts[j];
var currentDefaultScriptName = DEFAULT_SCRIPTS_SEPARATE[i].substr((DEFAULT_SCRIPTS_SEPARATE[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_SEPARATE[i].length);
if (currentDefaultScriptName === currentRunningScriptObject.name) {
shouldLoadCurrentDefaultScript = false;
}
}
if (shouldLoadCurrentDefaultScript) {
Script.load(DEFAULT_SCRIPTS_SEPARATE[i]);
}
} }
} }
function runDefaultsTogether() { function runDefaultsTogether() {
for (var i in DEFAULT_SCRIPTS_COMBINED) { var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
Script.include(DEFAULT_SCRIPTS_COMBINED[i]);
for (var i = 0; i < DEFAULT_SCRIPTS_COMBINED.length; i++) {
var shouldIncludeCurrentDefaultScript = true;
for (var j = 0; j < currentlyRunningScripts.length; j++) {
var currentRunningScriptObject = currentlyRunningScripts[j];
var currentDefaultScriptName = DEFAULT_SCRIPTS_COMBINED[i].substr((DEFAULT_SCRIPTS_COMBINED[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_COMBINED[i].length);
if (currentDefaultScriptName === currentRunningScriptObject.name) {
shouldIncludeCurrentDefaultScript = false;
}
}
if (shouldIncludeCurrentDefaultScript) {
Script.include(DEFAULT_SCRIPTS_COMBINED[i]);
}
} }
loadSeparateDefaults();
} }
function runDefaultsSeparately() { function runDefaultsSeparately() {
var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
for (var i in DEFAULT_SCRIPTS_COMBINED) { for (var i in DEFAULT_SCRIPTS_COMBINED) {
Script.load(DEFAULT_SCRIPTS_COMBINED[i]); var shouldLoadCurrentDefaultScript = true;
for (var j = 0; j < currentlyRunningScripts.length; j++) {
var currentRunningScriptObject = currentlyRunningScripts[j];
var currentDefaultScriptName = DEFAULT_SCRIPTS_COMBINED[i].substr((DEFAULT_SCRIPTS_COMBINED[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_COMBINED[i].length);
if (currentDefaultScriptName === currentRunningScriptObject.name) {
shouldLoadCurrentDefaultScript = false;
}
}
if (shouldLoadCurrentDefaultScript) {
Script.load(DEFAULT_SCRIPTS_COMBINED[i]);
}
} }
loadSeparateDefaults();
} }
// start all scripts // start all scripts
@ -99,6 +139,7 @@ if (Menu.isOptionChecked(MENU_ITEM)) {
// include all default scripts into this ScriptEngine // include all default scripts into this ScriptEngine
runDefaultsTogether(); runDefaultsTogether();
} }
loadSeparateDefaults();
function menuItemEvent(menuItem) { function menuItemEvent(menuItem) {
if (menuItem === MENU_ITEM) { if (menuItem === MENU_ITEM) {