index.js 2.2 KB

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