login_bar.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { login_manager } from "./login_manager.js";
  2. import { login_prompt } from "./login_prompt.js";
  3. import { product_adder } from "./product_adder.js";
  4. export class login_bar {
  5. #manager;
  6. constructor(target) {
  7. this.#manager = new login_manager();
  8. if (!this.#manager.logged_in) {
  9. this.#not_logged(target);
  10. return;
  11. }
  12. this.#logged(target);
  13. }
  14. #not_login_propertly() {
  15. this.#manager.logout();
  16. location.reload();
  17. }
  18. async #logged(target) {
  19. const user = await this.#manager.get_user();
  20. if (user === null) {
  21. this.#not_login_propertly();
  22. }
  23. const info_icon = document.createElement("span");
  24. info_icon.classList.add("icon");
  25. info_icon.classList.add("material-icons");
  26. info_icon.innerText = "account_circle";
  27. const info_content = document.createElement("span");
  28. info_content.innerText = user.nick;
  29. const info = document.createElement("p");
  30. info.classList.add("login-info");
  31. info.appendChild(info_icon);
  32. info.appendChild(info_content);
  33. target.appendChild(info);
  34. const logout_button = document.createElement("button");
  35. logout_button.innerText = "logout";
  36. logout_button.classList.add("logout-button");
  37. logout_button.classList.add("material-icons");
  38. target.appendChild(logout_button);
  39. const add_product_button = document.createElement("button");
  40. add_product_button.innerText = "add";
  41. add_product_button.classList.add("add-product-button");
  42. add_product_button.classList.add("material-icons");
  43. target.appendChild(add_product_button);
  44. add_product_button.addEventListener("click", () => {
  45. new product_adder().show();
  46. });
  47. logout_button.addEventListener("click", () => {
  48. this.#manager.logout();
  49. location.reload();
  50. });
  51. }
  52. #not_logged(target) {
  53. const login_button = document.createElement("button");
  54. login_button.innerText = "account_circle";
  55. login_button.classList.add("login-button");
  56. login_button.classList.add("material-icons");
  57. target.appendChild(login_button);
  58. new login_prompt(login_button);
  59. }
  60. }