index.js 2.5 KB

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