gamemaster-toggle_controller.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Controller } from '@hotwired/stimulus';
  2. export default class extends Controller {
  3. static values = {
  4. eventId: String, // UUIDv7 de l'événement
  5. gamemasterId: String // UUIDv7 du MJ
  6. }
  7. connect() {
  8. console.log("Stimulus: toggle gamemaster actif");
  9. this.element.addEventListener('click', this.toggleGamemaster.bind(this));
  10. }
  11. async toggleGamemaster(event) {
  12. event.preventDefault();
  13. const eventId = this.eventIdValue;
  14. const gamemasterId = this.gamemasterIdValue;
  15. if (!eventId || !gamemasterId) {
  16. console.error("UUID manquant pour event ou gamemaster");
  17. return;
  18. }
  19. const url = `/admin/event/${eventId}/configure/gamemaster/toggle/`;
  20. console.log(gamemasterId);
  21. try {
  22. const response = await fetch(url, {
  23. method: 'POST',
  24. headers: {
  25. 'Content-Type': 'application/json',
  26. 'X-Requested-With': 'XMLHttpRequest',
  27. //'X-CSRF-TOKEN': this.getCsrfToken() TODO: remettre en place si néccesaire ?
  28. },
  29. body: JSON.stringify({ gamemasterId: gamemasterId })
  30. });
  31. if (!response.ok) {
  32. console.error("Erreur HTTP :", response.status);
  33. return;
  34. }
  35. const data = await response.json();
  36. const cell = this.element;
  37. if (!cell) {
  38. console.error("Élément <article> introuvable");
  39. return;
  40. }
  41. if (data.status === "DISABLE") {
  42. cell.classList.add('is-div-disabled');
  43. } else if (data.status === "ENABLE") {
  44. cell.classList.remove('is-div-disabled');
  45. } else {
  46. console.warn("Statut de réponse inattendu :", data.status);
  47. }
  48. } catch (error) {
  49. console.error("Erreur réseau :", error);
  50. }
  51. }
  52. getCsrfToken() {
  53. const token = document.querySelector('meta[name="csrf-token"]');
  54. return token ? token.content : '';
  55. }
  56. }