(function () { /* in userData root object feedback: { eventName: "LoadTest_11_17_2018", url: }, signup: { linkURL: "eventbrite.com", url: }, apps: [] */ var FEEDBACK_CURRENT_EVENTNAME = "io.highfidelity.feedbackApp.currentEventName"; var SIGNUP_APP_SETTING = 'io.highfidelity.signup.app.url'; var appList = []; var userData; var feedback = { /* feedback: { eventName: "LoadTest_11_17_2018" } */ isSetup: false, defaultURL: "http://hifi-content.s3-us-west-1.amazonaws.com/Experiences/LoadTest/AppLoader/Apps/Feedback/feedback_loader.js", url: "", setup: function () { this.isSetup = true; Settings.setValue(FEEDBACK_CURRENT_EVENTNAME, userData.feedback.eventName); this.url = userData.feedback.url ? userData.feedback.url : this.defaultURL; var url = this.url; Script.setTimeout(function () { ScriptDiscoveryService.loadScript(url); }, 500); }, unload: function () { this.isSetup = false; ScriptDiscoveryService.stopScript(this.url); } } var signup = { /* signup: { linkURL: "eventbrite.com" } */ isSetup: false, defaultURL: "http://hifi-content.s3-us-west-1.amazonaws.com/Experiences/LoadTest/AppLoader/Apps/Signup/SignupApp_loader.js", url: "", setup: function () { this.isSetup = true; if (userData.signup.linkURL) { Settings.setValue(SIGNUP_APP_SETTING, userData.signup.linkURL); } this.url = userData.signup.url ? userData.signup.url : this.defaultURL; var url = this.url; Script.setTimeout(function () { ScriptDiscoveryService.loadScript(url); }, 500); }, unload: function () { this.isSetup = false; ScriptDiscoveryService.stopScript(this.url); } } var AppsToLoad = function () {} AppsToLoad.prototype = { preload: function (id) { var properties = Entities.getEntityProperties(id, ["userData"]); try { userData = JSON.parse(properties.userData); } catch (e) { console.error("Error parsing userData: ", e); } if (userData) { if (userData.feedback) { feedback.setup(); } if (userData.signup) { signup.setup(); } if (userData.apps) { if (Array.isArray(userData.apps)) { appList = userData.apps; var scriptList = ScriptDiscoveryService.getRunning(); appList.forEach(function (url) { if (scriptList.indexOf(url) === -1) { ScriptDiscoveryService.loadScript(url); } }); } else { console.error("AppsToLoad: userData.apps is not an array!"); } } } }, unload: function () { if (feedback.isSetup) { feedback.unload(); } if (signup.isSetup) { signup.unload(); } if (appList.length) { appList.forEach(function (url) { ScriptDiscoveryService.stopScript(url); }); } } }; return new AppsToLoad (); })