index.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. import sessionHistoryPage from "./js/pages/sessionHistory.js";
  9. const notifier = document.getElementById("notifier");
  10. const pageElements = document.querySelectorAll(".page");
  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. case "sessionHistory": sessionHistoryPage.render(data); break;
  34. }
  35. }
  36. if(localStorage.getItem("loggedIn") === "true"){
  37. changePage("home");
  38. }else{
  39. changePage("login");
  40. }
  41. if("serviceWorker" in navigator){
  42. window.addEventListener("load", ()=>{
  43. navigator.serviceWorker.register("/serviceWorker.js")
  44. .then(reg => null)
  45. .catch(err => null);
  46. });
  47. }
  48. let deferredPrompt;
  49. const installBtn = document.getElementById("installPwa");
  50. let isPwaInstalled = ()=>{
  51. return window.matchMedia("(display-mode: standalone)").matches || window.navigator.standalone === true;
  52. }
  53. if(isPwaInstalled()){
  54. installBtn.style.display = "none";
  55. }
  56. window.addEventListener("beforeinstallprompt", (e)=>{
  57. e.preventDefault();
  58. deferredPrompt = e;
  59. });
  60. installBtn.addEventListener("click", async ()=>{
  61. if(deferredPrompt){
  62. deferredPrompt.prompt();
  63. const {outcome} = await deferredPrompt.userChoice;
  64. deferredPrompt = null;
  65. if(outcome === "accepted") installBtn.style.display = "none";
  66. }
  67. });