Errore di capitalizzazione del percorso in private_messages_group

Non sono molto familiare con le caselle di posta private dei gruppi e non sono sicuro di come riprodurre il problema, ma sta accadendo quanto segue:

  • È stata configurata una casella di posta per i messaggi privati di un gruppo, chiamiamolo ExampleGroup.
  • Un membro del gruppo riceve una notifica: ‘ci sono 6 messaggi nella tua casella di posta examplegroup’.
  • Cliccando sulla notifica si tenta di caricare /topics/private-messages-group/username/examplegroup.json.
  • Questo genera un errore.

Penso che ciò accada perché non esiste un gruppo chiamato examplegroup. Il gruppo si chiama ExampleGroup.

ListController::generate_message_route fa questo:

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

Modificandolo in:

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

sembra risolvere il problema. Ma sono certo che non sia questo il vero problema. Da qualche parte il parametro viene convertito in minuscolo quando non dovrebbe esserlo (penso…).

Qualcuno ha qualche suggerimento su dove guardare?

3 Mi Piace

Se crei le notifiche direttamente dalla console, il link rispetta le maiuscole (questo funziona anche se i dati sono finti)

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
)

Il problema potrebbe essere lato creazione, ovvero nel post alerter: discourse/app/services/post_alerter.rb at main · discourse/discourse · GitHub

Tuttavia, non riesco a riprodurlo.

1 Mi Piace

Grazie per il tuo aiuto! Ma quel non è il link corretto,

non è /u/username/messages/group/groupname
ma /topics/private-messages-group/username/groupname.

Non riesco a capire da dove provenga quest’ultimo e come generarne uno.

2 Mi Piace

Credo che la soluzione corretta qui sia di non richiedere il nome del gruppo con la prima lettera maiuscola nei parametri dell’URL. Realizzato tramite:

Tieni presente che navigando su /u/username/messages/group/groupname viene inviato una richiesta AJAX a /topics/private-messages-group/username/groupname, quindi ciò che @angus ha fatto sopra per debuggare questo problema sembra corretto.

Grazie per aver segnalato questo problema @RGJ :+1:

5 Mi Piace