Files
SalaMuseoGames/assets/js/pwa.js

57 lines
1.9 KiB
JavaScript

(function(){
var Prefs = SalaMuseoGames.Prefs;
var Software = SalaMuseoGames.page.software_data;
var Screen = (Software && Software.screen);
var Site = SalaMuseoGames.site;
if (Prefs.pwaManifests.value) {
var manifestData;
if (Prefs.softwarePwaManifests.value && Software) {
// specific manifests on games pages
manifestData = {
name: document.querySelector('.post-title').textContent,
description: document.querySelector('.post-subtitle').textContent,
start_url: (location.href + ''), // TODO Url parameters to make the game open fullscreen and automatically start
display: ((Screen && Screen.display) || "standalone"),
orientation: ((Screen && Screen.orientation) || "any"),
};
} else {
// site manifest on global pages
var ldData;
for (var elem of document.querySelectorAll('script[type="application/ld+json"]')) {
// extract site data from JSON-LD data blocks
var data = JSON.parse(elem.innerHTML);
if (data['@type'] === 'Organization') {
ldData = data;
break;
};
}
manifestData = {
name: ldData.name,
description: ldData.description,
start_url: (Site.url + Site.baseurl),
display: "standalone",
};
}
manifestData = Object.assign(manifestData, {
scope: location.href,
background_color: (Software && Software.background_color || getComputedStyle(document.body).backgroundColor),
icons: [{
src: (SalaMuseoGames.page.icon || (Site.url + Site.baseurl + '/assets/img/icons/mediumtile.png')),
sizes: "any",
purpose: "any",
}],
});
var manifestElem = document.createElement('link');
manifestElem.rel = 'manifest';
manifestElem.href = ('data:application/manifest+json;utf8,' + encodeURIComponent(JSON.stringify(manifestData)));
document.head.appendChild(manifestElem);
}
if (Prefs.offlineCache.value) {
navigator.serviceWorker.register('/SalaMuseoGames-ServiceWorker.js');
}
})();