share + pwa + fixes
This commit is contained in:
@ -8,6 +8,94 @@
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
/**
|
||||
* Progressive Web-App
|
||||
**/
|
||||
let deferredPrompt;
|
||||
const installPrompt = document.getElementById("install-prompt");
|
||||
const chromeMessage = document.getElementById("chrome-install-message");
|
||||
const iosMessage = document.getElementById("ios-install-message");
|
||||
const installButton = document.getElementById("install-button");
|
||||
const dismissButton = document.querySelector("#install-prompt .btn-close");
|
||||
|
||||
// Check if the user previously dismissed the prompt
|
||||
if ( ! localStorage.getItem("pwaInstallDismissed") ) {
|
||||
window.addEventListener("beforeinstallprompt", (event) => {
|
||||
event.preventDefault();
|
||||
deferredPrompt = event;
|
||||
installPrompt.classList.remove("d-none");
|
||||
installPrompt.classList.add("d-block"); // Show the alert
|
||||
chromeMessage.classList.remove("d-none");
|
||||
chromeMessage.classList.add("d-block"); // Show the prompt
|
||||
});
|
||||
|
||||
if ( isIos() && ! isInStandaloneMode() ) {
|
||||
installPrompt.classList.remove("d-none");
|
||||
installPrompt.classList.add("d-block"); // Show the alert
|
||||
iosMessage.classList.remove("d-none");
|
||||
iosMessage.classList.add("d-block"); // Show the prompt
|
||||
}
|
||||
}
|
||||
|
||||
// ios REQUIRES a service worker
|
||||
if ( 'serviceWorker' in navigator ) {
|
||||
navigator.serviceWorker.register('app/js/sw.js')
|
||||
.then(() => console.log('Service Worker Registered'));
|
||||
}
|
||||
// self.addEventListener('install', () => self.skipWaiting());
|
||||
// self.addEventListener('activate', () => self.clients.claim());
|
||||
// self.addEventListener('fetch', () => {}); // No file interception
|
||||
|
||||
// Handle Install Button Click
|
||||
if ( installButton ) {
|
||||
installButton.addEventListener("click", async () => {
|
||||
if ( deferredPrompt ) {
|
||||
deferredPrompt.prompt();
|
||||
const { outcome } = await deferredPrompt.userChoice;
|
||||
|
||||
if (outcome === "dismissed") {
|
||||
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||
}
|
||||
|
||||
deferredPrompt = null; // Reset prompt
|
||||
installPrompt.classList.remove("d-block");
|
||||
installPrompt.classList.add("d-none");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Handle Close Button Click
|
||||
if ( dismissButton ) {
|
||||
dismissButton.addEventListener("click", () => {
|
||||
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||
});
|
||||
}
|
||||
|
||||
// Function to remember user choice for 7 days
|
||||
function setInstallDismissed() {
|
||||
localStorage.setItem("pwaInstallDismissed", Date.now() + 7 * 24 * 60 * 60 * 1000);
|
||||
installPrompt.classList.remove("d-block"); // Hide the prompt
|
||||
installPrompt.classList.add("d-none");
|
||||
}
|
||||
|
||||
// Check if the 7-day period has passed
|
||||
if (localStorage.getItem("pwaInstallDismissed")) {
|
||||
const dismissUntil = parseInt(localStorage.getItem("pwaInstallDismissed"), 10);
|
||||
if (Date.now() < dismissUntil) {
|
||||
//
|
||||
} else {
|
||||
localStorage.removeItem("pwaInstallDismissed"); // Reset after 7 days
|
||||
}
|
||||
}
|
||||
|
||||
function isIos() {
|
||||
return /iphone|ipad|ipod/i.test(navigator.userAgent);
|
||||
}
|
||||
|
||||
function isInStandaloneMode() {
|
||||
return window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically selects/de-selects all check boxes associated with that field
|
||||
**/
|
||||
@ -215,6 +303,8 @@ document.querySelectorAll('[data-bs-toggle="collapse"]').forEach(button => {
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
|
||||
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
|
||||
return new bootstrap.Popover(popoverTriggerEl);
|
||||
return new bootstrap.Popover(popoverTriggerEl, {
|
||||
customClass: 'context-popover',
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user