VulpesOS/gaia/distros/spark/apps/customizer-launcher/js/lib/helpers.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

96 lines
No EOL
2.8 KiB
JavaScript
Executable file

define(["exports", "components/fxos-achievements-service/dist/achievements-service"], function (exports, _componentsFxosAchievementsServiceDistAchievementsService) {
"use strict";
var AchievementsService = _componentsFxosAchievementsServiceDistAchievementsService["default"];
var IconHelper = (function () {
var IconHelper = function IconHelper() {};
IconHelper.setImage = function (imageElement, imagePath) {
imageElement.src = imagePath || window.DEFAULT_ICON_URL;
imageElement.onerror = function (e) {
console.warn("Warning, failed to load icon url", imageElement.src, e);
imageElement.src = window.DEFAULT_ICON_URL;
};
};
IconHelper.getIconURL = function (app, icons) {
if (!icons || !Object.keys(icons).length) {
return "";
}
// The preferred size is 30 by the default. If we use HDPI device, we may
// use the image larger than 30 * 1.5 = 45 pixels.
var preferredIconSize = 30 * (window.devicePixelRatio || 1);
var preferredSize = Number.MAX_VALUE;
var max = 0;
for (var size in icons) {
size = parseInt(size, 10);
if (size > max) {
max = size;
}
if (size >= preferredIconSize && size < preferredSize) {
preferredSize = size;
}
}
// If there is an icon matching the preferred size, we return the result,
// if there isn't, we will return the maximum available size.
if (preferredSize === Number.MAX_VALUE) {
preferredSize = max;
}
var url = icons[preferredSize];
if (url) {
return !(/^(http|https|data):/.test(url)) ? app.origin + url : url;
} else {
return "";
}
};
return IconHelper;
})();
exports.IconHelper = IconHelper;
var AppsHelper = (function () {
var AppsHelper = function AppsHelper() {};
AppsHelper.getAllApps = function () {
return new Promise(function (resolve, reject) {
var mgmt = navigator.mozApps.mgmt;
if (!mgmt) {
reject(new Error("Cannot fetch apps, no permissions"));
}
var req = mgmt.getAll();
req.onsuccess = function () {
resolve(req.result);
};
req.onerror = function (e) {
reject(e);
};
});
};
return AppsHelper;
})();
exports.AppsHelper = AppsHelper;
var AchievementsHelper = (function () {
var AchievementsHelper = function AchievementsHelper() {
// Create an achievements service
this.achievementsService = new AchievementsService();
window.addEventListener("achievement-rewarded", this);
};
AchievementsHelper.prototype.handleEvent = function (aEvent) {
this.achievementsService.reward(aEvent.detail);
};
return AchievementsHelper;
})();
exports.AchievementsHelper = AchievementsHelper;
});