content/hifi-content/Experiences/LoadTest/AppLoader/AppLoader.js
2022-02-13 23:16:46 +01:00

134 lines
No EOL
3.9 KiB
JavaScript

(function () {
/* in userData root object
feedback: {
eventName: "LoadTest_11_17_2018",
url: <optional>
},
signup: {
linkURL: "eventbrite.com",
url: <optional>
},
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 ();
})