Проверьте, установлен ли PWA уже на устройстве

#javascript #events #installation #progressive-web-apps #prompt

Вопрос:

Я хочу проверить, установлен ли PWA уже на устройстве пользователя, чтобы исчезнуть, или моя кнопка приглашения отсутствует.

Я уже пробовал window.matchMedia('(display-mode: standalone)').matches , но это не совсем то, что я хочу делать. Я хочу, чтобы, если пользователь продолжит заходить на веб-сайт (а не в приложение), кнопка приглашения исчезла. И window.matchMedia не делай этого.

Я пытался создать переменную, которая становится истинной при вызове события «appinstalled» или когда пользователь соглашается на установку, но это не работает, когда я console.log эту переменную, она не определена.

У меня больше нет идей…

Вот мой код :

 let deferredPrompt;
let buttonInstall = document.querySelector('#button-install');
let divPrompt = document.querySelector('.button-install-box');
let installedOrNot;

window.addEventListener('beforeinstallprompt', (e) => {
  e.preventDefault();
  deferredPrompt = e;
  divPrompt.style.display = "flex";
});

buttonInstall.addEventListener('click', (e) => {
  divPrompt.style.display = "none";
  deferredPrompt.prompt();
  deferredPrompt.userChoice.then((choiceResult) => {
    if(choiceResult.outcome === "accepted") {
      console.log("User accepted the install prompt");
      installedOrNot = true;
    } else {
      divPrompt.style.display = "flex";
      installedOrNot = false;
    }
    deferredPrompt = null;
  });
});

window.addEventListener('appinstalled', (e) => {
  divPrompt.style.display = "none";
  deferredPrompt = null;
  installedOrNot = true;
});

if(installedOrNot) {
  divPrompt.style.display = "none";
}
 

Какие-нибудь решения, пожалуйста ?

Заранее благодарю вас !