Skip to content

Instantly share code, notes, and snippets.

@mp5maker
Created December 5, 2020 08:10
Show Gist options
  • Select an option

  • Save mp5maker/525d4b9b7fb9218edf30acbab8b8f0a5 to your computer and use it in GitHub Desktop.

Select an option

Save mp5maker/525d4b9b7fb9218edf30acbab8b8f0a5 to your computer and use it in GitHub Desktop.
PWA with banner (add to your home screen)
(function() {
let deferredPrompt;
const BANNER_ID = 'banner'
const banner = window.localStorage.getItem(BANNER_ID)
const bannerElement = document.querySelector('.banner')
if (banner !== 'not-needed') bannerElement.classList.add('active')
const onBannerClick = () => {
const newDeferredPromptPromise = new Promise((resolve) => {
console.log(deferredPrompt)
if (deferredPrompt && deferredPrompt.prompt) deferredPrompt.prompt()
resolve()
})
newDeferredPromptPromise.then(() => {
if (deferredPrompt && deferredPrompt.userChoice) {
const onSuccessUserChoice = (choiceResult) => {
if (choiceResult.outcome == 'accepted')
bannerElement.classList.remove('active')
window.localStorage.setItem(BANNER_ID, 'not-needed')
}
deferredPrompt.userChoice.then(onSuccessUserChoice)
}
})
}
bannerElement.addEventListener('click', onBannerClick)
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault()
deferredPrompt = event;
})
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment