define(function () {
|
|
|
|
'use strict';
|
|
|
|
var env = {};
|
|
|
|
env.getEnvironment = function (callback) {
|
|
// FIXME: we assume this code runs on the same thread as the
|
|
// javascript executed from sugar-toolkit-gtk3 (python)
|
|
|
|
if (env.isSugarizer()) {
|
|
var getUrlParameter = function(name) {
|
|
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
|
|
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
|
|
};
|
|
window.top.sugar = {};
|
|
window.top.sugar.environment = {
|
|
activityId: getUrlParameter("aid"),
|
|
activityName: getUrlParameter("n"),
|
|
bundleId: getUrlParameter("a"),
|
|
objectId: getUrlParameter("o"),
|
|
sharedId: getUrlParameter("s"),
|
|
help: getUrlParameter("h"),
|
|
standAlone: getUrlParameter("sa")
|
|
};
|
|
if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) {
|
|
chrome.storage.local.get('sugar_settings', function(values) {
|
|
window.top.sugar.environment.user = JSON.parse(values.sugar_settings);
|
|
callback(null, window.top.sugar.environment);
|
|
});
|
|
} else {
|
|
window.top.sugar.environment.user = JSON.parse(localStorage.sugar_settings);
|
|
setTimeout(function () {
|
|
callback(null, window.top.sugar.environment);
|
|
}, 0);
|
|
}
|
|
} else if (env.isStandalone()) {
|
|
setTimeout(function () {
|
|
callback(null, {});
|
|
}, 0);
|
|
} else {
|
|
var environmentCallback = function () {
|
|
callback(null, window.top.sugar.environment);
|
|
};
|
|
|
|
if (window.top.sugar) {
|
|
setTimeout(function () {
|
|
environmentCallback();
|
|
}, 0);
|
|
} else {
|
|
window.top.sugar = {};
|
|
window.top.sugar.onEnvironmentSet = function () {
|
|
environmentCallback();
|
|
};
|
|
}
|
|
}
|
|
};
|
|
|
|
env.getObjectId = function (callback) {
|
|
env.getEnvironment(function (error, environment) {
|
|
callback(environment.objectId);
|
|
});
|
|
};
|
|
|
|
env.getURLScheme = function () {
|
|
return window.location.protocol;
|
|
};
|
|
|
|
env.getHost = function() {
|
|
return window.location.hostname;
|
|
};
|
|
|
|
env.isStandalone = function () {
|
|
var webActivityURLScheme = "activity:";
|
|
var fileURLScheme = "file:";
|
|
var currentURLScheme = env.getURLScheme();
|
|
|
|
// the control of hostname !== '0.0.0.0' is used
|
|
// for compatibility with F18 and webkit1
|
|
return currentURLScheme !== webActivityURLScheme &&
|
|
currentURLScheme !== fileURLScheme &&
|
|
window.location.hostname !== '0.0.0.0';
|
|
};
|
|
|
|
env.isSugarizer = function() {
|
|
// HACK: If in Chrome App automatic deduction that in Sugarizer
|
|
if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) {
|
|
return true;
|
|
} else if (typeof(Storage)!=="undefined" && typeof(window.localStorage)!=="undefined") {
|
|
try {
|
|
return (window.localStorage.getItem('sugar_settings') !== null);
|
|
} catch(err) {
|
|
return false;
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
|
|
env.isSugarizerOS = function() {
|
|
if (typeof window.sugarizerOS != 'undefined')
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
return env;
|
|
});
|