Daly26 commited on
Commit
63e891c
·
1 Parent(s): 70996d5

Vérification pour éviter une boucle infini lors de l sélection du role

Browse files
Files changed (1) hide show
  1. templates/index.html +21 -5
templates/index.html CHANGED
@@ -423,8 +423,11 @@
423
  });
424
 
425
  // si on a déjà enregistré un rôle, envoyer automatiquement au back seulement si le rôle n'est pas encore confirmé
426
- if (selectedRole && document.querySelector('.role-selection-container')) {
 
 
427
  console.log('Role déjà présent en localStorage:', selectedRole);
 
428
  // lancer en tâche de fond, sans bloquer
429
  fetch('/api/ask', {
430
  method: 'POST',
@@ -432,14 +435,27 @@
432
  body: JSON.stringify({ role_selection: selectedRole }),
433
  credentials: 'include'
434
  })
435
- .then(resp => resp.json())
 
 
 
 
 
 
 
 
 
 
436
  .then(data => {
437
- console.log('Auto-enregistrement rôle', data);
438
- if (data.status === 'role_selected') {
439
  window.location.href = window.location.origin + '/';
440
  }
441
  })
442
- .catch(err => console.error('Erreur auto-role', err));
 
 
 
443
  }
444
  }
445
 
 
423
  });
424
 
425
  // si on a déjà enregistré un rôle, envoyer automatiquement au back seulement si le rôle n'est pas encore confirmé
426
+ // et qu'on n'a pas déjà essayé cette session
427
+ const autoSubmitAttempted = sessionStorage.getItem("auto_submit_attempted");
428
+ if (selectedRole && document.querySelector('.role-selection-container') && !autoSubmitAttempted) {
429
  console.log('Role déjà présent en localStorage:', selectedRole);
430
+ sessionStorage.setItem("auto_submit_attempted", "true");
431
  // lancer en tâche de fond, sans bloquer
432
  fetch('/api/ask', {
433
  method: 'POST',
 
435
  body: JSON.stringify({ role_selection: selectedRole }),
436
  credentials: 'include'
437
  })
438
+ .then(resp => {
439
+ if (resp.status === 429) {
440
+ console.log('Trop de requêtes, réessai dans 5 secondes...');
441
+ sessionStorage.removeItem("auto_submit_attempted"); // permettre un nouvel essai
442
+ setTimeout(() => {
443
+ window.location.reload();
444
+ }, 5000);
445
+ return;
446
+ }
447
+ return resp.json();
448
+ })
449
  .then(data => {
450
+ if (data && data.status === 'role_selected') {
451
+ console.log('Auto-enregistrement rôle réussi');
452
  window.location.href = window.location.origin + '/';
453
  }
454
  })
455
+ .catch(err => {
456
+ console.error('Erreur auto-role:', err);
457
+ sessionStorage.removeItem("auto_submit_attempted"); // permettre un nouvel essai en cas d'erreur
458
+ });
459
  }
460
  }
461