Erreur de casse de route dans private_messages_group

Je ne suis pas très familier avec les boîtes de réception de groupes privés et je ne suis pas sûr de savoir comment reproduire ce problème, mais voici ce qui se produit :

  • Une boîte de réception de messages privés a été configurée pour un groupe, appelons-le ExampleGroup.
  • Un membre de ce groupe reçoit une notification : « il y a 6 messages dans votre boîte de réception examplegroup ».
  • En cliquant sur cette notification, on tente de charger /topics/private-messages-group/username/examplegroup.json.
  • Cela génère une erreur.

Je pense que cela est dû au fait qu’il n’existe pas de groupe nommé examplegroup. Le groupe s’appelle ExampleGroup.

ListController::generate_message_route fait ceci :

group = Group.find_by(name: params[:group_name])

Le fait de modifier cela en :

group = Group.find_by(name: params[:group_name])
group = Group.where('lower(name) = ?', params[:group_name].downcase).first unless group

semble résoudre le problème. Mais je suis certain que ce n’est pas le véritable problème. Quelque part, le paramètre est converti en minuscules alors qu’il ne devrait pas l’être (je pense…).

Quelqu’un aurait-il une suggestion sur où chercher ?

3 « J'aime »

Si vous créez directement des notifications dans la console, le lien respecte la casse (cela fonctionne même si les données sont factices)

Notification.create!(
  user_id: 1,
  notification_type: Notification.types[:group_message_summary],
  data: { inbox_count: 5, group_name: "MyGroup", group_id: 41, username: 'angus' }.to_json
)

Le problème pourrait se situer côté création, c’est-à-dire dans le post_alerter : discourse/app/services/post_alerter.rb at main · discourse/discourse · GitHub

Cependant, je n’arrive pas à reproduire ce cas.

1 « J'aime »

Merci pour votre aide ! Mais ce n’est pas le bon lien.

Ce n’est pas /u/username/messages/group/groupname
mais /topics/private-messages-group/username/groupname.

Je ne parviens pas à trouver d’où provient ce dernier et comment le générer.

2 « J'aime »

Je pense que la bonne correction consiste à ne pas exiger un nom de groupe en majuscules dans les paramètres d’URL. Cela a été réalisé via :

Notez que la navigation vers /u/username/messages/group/groupname déclenche une requête AJAX vers /topics/private-messages-group/username/groupname, donc ce que @angus a fait ci-dessus pour déboguer ce problème semble correct.

Merci d’avoir signalé ce problème @RGJ :+1:

5 « J'aime »