mirror of https://github.com/espruino/BangleApps
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
const divInstall = document.getElementById('installContainer');
|
|
const butInstall = document.getElementById('butInstall');
|
|
|
|
window.addEventListener('beforeinstallprompt', (event) => {
|
|
console.log('👍', 'beforeinstallprompt', event);
|
|
// Stash the event so it can be triggered later.
|
|
window.deferredPrompt = event;
|
|
// Remove the 'hidden' class from the install button container
|
|
divInstall.classList.toggle('hidden', false);
|
|
});
|
|
|
|
butInstall.addEventListener('click', () => {
|
|
console.log('👍', 'butInstall-clicked');
|
|
const promptEvent = window.deferredPrompt;
|
|
if (!promptEvent) {
|
|
// The deferred prompt isn't available.
|
|
return;
|
|
}
|
|
// Show the install prompt.
|
|
promptEvent.prompt();
|
|
// Log the result
|
|
promptEvent.userChoice.then((result) => {
|
|
console.log('👍', 'userChoice', result);
|
|
// Reset the deferred prompt variable, since
|
|
// prompt() can only be called once.
|
|
window.deferredPrompt = null;
|
|
// Hide the install button.
|
|
divInstall.classList.toggle('hidden', true);
|
|
});
|
|
});
|
|
|
|
window.addEventListener('appinstalled', (event) => {
|
|
console.log('👍', 'appinstalled', event);
|
|
});
|
|
|
|
|
|
/* Only register a service worker if it's supported */
|
|
if ('serviceWorker' in navigator) {
|
|
navigator.serviceWorker.register('js/service-worker.js');
|
|
}
|
|
|
|
/**
|
|
* Warn the page must be served over HTTPS
|
|
* The `beforeinstallprompt` event won't fire if the page is served over HTTP.
|
|
* Installability requires a service worker with a fetch event handler, and
|
|
* if the page isn't served over HTTPS, the service worker won't load.
|
|
*/
|
|
if (window.location.protocol === 'http:' && window.location.hostname!="localhost") {
|
|
const requireHTTPS = document.getElementById('requireHTTPS');
|
|
const link = requireHTTPS.querySelector('a');
|
|
link.href = window.location.href.replace('http://', 'https://');
|
|
requireHTTPS.classList.remove('hidden');
|
|
}
|