// variables let deferredPrompt const events = ['click', 'touchend', 'ontouchend'] const customDialog = document.querySelector('.pwa_dialog') const installBtn = document.querySelector('#installPWA') const showPwaDialogBtn = document.querySelector('#showPwaDialog') const closePwaDialogBtn = document.querySelector('#closePwaDialog') // functions function showCustomInstallPromotion() { setTimeout(function() { customDialog?.classList.add('active') }, 500) } function hideCustomInstallPromotion() { setTimeout(function() { customDialog?.classList.remove('active') }, 500) } // events window.addEventListener('beforeinstallprompt', e => { // Prevent the mini-infobar from appearing on mobile e.preventDefault() // Stash the event so it can be triggered later. deferredPrompt = e // Update UI notify the user they can install the PWA // if (location.pathname !== '/') showCustomInstallPromotion() showCustomInstallPromotion() }) events.forEach(evt => { closePwaDialogBtn?.addEventListener(evt, e => { hideCustomInstallPromotion() }) installBtn?.addEventListener(evt, e => { // Hide the app provided install promotion hideCustomInstallPromotion() // Show the install prompt deferredPrompt.prompt() // Wait for the user to respond to the prompt deferredPrompt.userChoice.then(choiceResult => { if (choiceResult.outcome === 'accepted') { console.log('User accepted the install prompt') } else { console.log('User dismissed the install prompt') } }) }) try { showPwaDialogBtn?.addEventListener(evt, e => { if (deferredPrompt) { showCustomInstallPromotion() } else { alert('شما قبلا برنامه را نصب کرده اید') } }) } catch (e) {} })