This commit is contained in:
Joey Kimsey
2025-02-05 20:45:41 -05:00
parent a6b241c7f0
commit d4c5fccec9
3 changed files with 11 additions and 9 deletions

View File

@ -8,7 +8,6 @@
* @link https://TheTempusProject.com * @link https://TheTempusProject.com
* @license https://opensource.org/licenses/MIT [MIT LICENSE] * @license https://opensource.org/licenses/MIT [MIT LICENSE]
*/ */
let deferredPrompt; let deferredPrompt;
const installPrompt = document.getElementById("install-prompt"); const installPrompt = document.getElementById("install-prompt");
const installButton = document.getElementById("install-button"); const installButton = document.getElementById("install-button");
@ -19,7 +18,8 @@ if (!localStorage.getItem("pwaInstallDismissed")) {
window.addEventListener("beforeinstallprompt", (event) => { window.addEventListener("beforeinstallprompt", (event) => {
event.preventDefault(); event.preventDefault();
deferredPrompt = event; deferredPrompt = event;
installPrompt.classList.add("show"); // Show the prompt installPrompt.classList.remove("d-none");
installPrompt.classList.add("d-block"); // Show the prompt
}); });
} }
@ -29,13 +29,14 @@ if ( installButton ) {
if (deferredPrompt) { if (deferredPrompt) {
deferredPrompt.prompt(); deferredPrompt.prompt();
const { outcome } = await deferredPrompt.userChoice; const { outcome } = await deferredPrompt.userChoice;
if (outcome === "dismissed") { if (outcome === "dismissed") {
setInstallDismissed(); // Store that the user dismissed the prompt setInstallDismissed(); // Store that the user dismissed the prompt
} }
deferredPrompt = null; // Reset prompt deferredPrompt = null; // Reset prompt
installPrompt.classList.remove("show"); // Hide the prompt installPrompt.classList.remove("d-block");
installPrompt.classList.add("d-none");
} }
}); });
} }
@ -50,14 +51,15 @@ if ( dismissButton ) {
// Function to remember user choice for 7 days // Function to remember user choice for 7 days
function setInstallDismissed() { function setInstallDismissed() {
localStorage.setItem("pwaInstallDismissed", Date.now() + 7 * 24 * 60 * 60 * 1000); localStorage.setItem("pwaInstallDismissed", Date.now() + 7 * 24 * 60 * 60 * 1000);
installPrompt.classList.remove("show"); // Hide the prompt installPrompt.classList.remove("d-block"); // Hide the prompt
installPrompt.classList.add("d-none");
} }
// Check if the 7-day period has passed // Check if the 7-day period has passed
if (localStorage.getItem("pwaInstallDismissed")) { if (localStorage.getItem("pwaInstallDismissed")) {
const dismissUntil = parseInt(localStorage.getItem("pwaInstallDismissed"), 10); const dismissUntil = parseInt(localStorage.getItem("pwaInstallDismissed"), 10);
if (Date.now() < dismissUntil) { if (Date.now() < dismissUntil) {
installPrompt.classList.remove("show"); // Ensure it's hidden //
} else { } else {
localStorage.removeItem("pwaInstallDismissed"); // Reset after 7 days localStorage.removeItem("pwaInstallDismissed"); // Reset after 7 days
} }

View File

@ -1,9 +1,9 @@
<div class="container pt-4 fade show" id="install-prompt"> <div class="container pt-4 d-none" id="install-prompt">
<div class="row"> <div class="row">
<div class="alert alert-success alert-dismissible w-100" role="alert"> <div class="alert alert-success alert-dismissible w-100" role="alert">
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
{SITENAME} is now available as a Progressive Web App, click the button to install now. {SITENAME} is now available as a Progressive Web App, click the button to install now.
<button class="btn btn-md btn-outline-primary me-3" id="install-button">Install App</button> <button class="btn btn-md btn-outline-primary mx-2" id="install-button">Install App</button>
</div> </div>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div> </div>

BIN
images/icon-maskWhite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB