let deferredPrompt = null; let installed = false; let initiated = false; export default { init() { initiated = true; window.addEventListener('beforeinstallprompt', (e) => { // Prevent Chrome 67 and earlier from automatically showing the prompt e.preventDefault(); deferredPrompt = e; if (window.matchMedia('(display-mode: standalone)').matches) { installed = true; } else { installed = false; } deferredPrompt.userChoice.then((choiceResult) => { if (choiceResult.outcome !== 'accepted') { installed = false; } deferredPrompt = null; }); }); window.addEventListener('appinstalled', () => { installed = true; }); }, isInstalled() { return initiated && installed; }, install() { if (!installed) { deferredPrompt.prompt(); } } }