index.js 2.3 KB

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