index.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import registerPage from "./js/pages/register.js";
  2. import loginPage from "./js/pages/login.js";
  3. import homePage from "./js/pages/home.js";
  4. import workoutMenuPage from "./js/pages/workoutMenu.js";
  5. import newWorkoutPage from "./js/pages/newWorkout.js";
  6. import sessionPage from "./js/pages/session.js";
  7. const notifier = document.getElementById("notifier");
  8. const pageElements = document.querySelectorAll(".page");
  9. loginPage.render();
  10. window.notify = (type, message)=>{
  11. notifier.className = "";
  12. notifier.classList.add(type);
  13. notifier.textContent = message;
  14. notifier.style.display = "flex";
  15. setTimeout(()=>{
  16. notifier.style.display = "none";
  17. }, 7500);
  18. }
  19. window.changePage = (page, data)=>{
  20. for(let i = 0; i < pageElements.length; i++){
  21. pageElements[i].style.display = "none";
  22. }
  23. document.getElementById(`${page}Page`).style.display = "flex";
  24. switch(page){
  25. case "login": loginPage.render(); break;
  26. case "register": registerPage.render(); break;
  27. case "home": homePage.render(data); break;
  28. case "newWorkout": newWorkoutPage.render();
  29. case "session": sessionPage.render(data); break;
  30. case "workoutMenu": workoutMenuPage.render(data); break;
  31. }
  32. }
  33. if("serviceWorker" in navigator){
  34. window.addEventListener("load", ()=>{
  35. navigator.serviceWorker.register("/serviceWorker.js")
  36. .then(reg => null)
  37. .catch(err => null);
  38. });
  39. }
  40. let deferredPrompt;
  41. const installBtn = document.getElementById("installPwa");
  42. let isPwaInstalled = ()=>{
  43. return window.matchMedia("(display-mode: standalone)").matches || window.navigator.standalone === true;
  44. }
  45. if(isPwaInstalled()){
  46. installBtn.style.display = "none";
  47. }
  48. window.addEventListener("beforeinstallprompt", (e)=>{
  49. e.preventDefault();
  50. deferredPrompt = e;
  51. });
  52. installBtn.addEventListener("click", async ()=>{
  53. if(deferredPrompt){
  54. deferredPrompt.prompt();
  55. const {outcome} = await deferredPrompt.userChoice;
  56. deferredPrompt = null;
  57. console.log(outcome); //accepted
  58. if(outcome === "accepted") installBtn.style.display = "none";
  59. }
  60. });