Chat API : le paramètre page_size est ignoré lorsque direction=past

Je signale un bug avec l’API du plugin Discourse Chat. Lors de la requête des messages de chat précédents, le paramètre page_size est ignoré et le point de terminaison renvoie toujours le nombre maximum de messages.

Étapes pour reproduire :

  1. Effectuez un appel API au point de terminaison des messages de chat (par exemple, /chat/{channel_id}/messages.json).

  2. Utilisez les paramètres suivants dans la requête :

    • target_message_id : [ID d’un message récent]

    • direction : past

    • page_size : 5 (ou tout nombre inférieur à 50)

Comportement attendu : L’API doit renvoyer un objet JSON contenant un maximum de 5 messages envoyés avant le target_message_id spécifié.

Comportement actuel : L’API renvoie 50 messages, ignorant le paramètre page_size=5. Il semble être codé en dur à la taille de page maximale dans ce scénario.

Merci de vous pencher sur ce problème !

2 « J'aime »

En parcourant l’implémentation, cela semble quelque peu délibéré :

Peut-être que @loic a quelques réflexions à ce sujet.

2 « J'aime »

J’ai passé du temps à essayer de le reproduire, mais je n’ai pas réussi.

J’ai vérifié Chat::MessagesQuery, Chat::ListChannelMessages et l’action du contrôleur à travers nos specs et manuellement sur une instance locale également. Le paramètre page_size est pris en compte comme prévu, ainsi que le paramètre direction.

@Nima1 es-tu sûr d’utiliser le bon endpoint ? Il devrait contenir api, comme ceci : /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.

Une autre chose que je n’ai pas vérifiée est si le comportement est différent sur stable. Ton instance est-elle à jour avec la branche tests-passed ?

2 « J'aime »

Merci d’avoir examiné cela.

Mes excuses, j’ai oublié de mentionner un détail crucial : ce problème ne se produit que dans les canaux où le threading est activé. C’est probablement pourquoi vous n’avez pas pu le reproduire.

Le paramètre page_size est ignoré lorsque je récupère des messages d’un thread spécifique. Par exemple, lorsque j’utilise ce point de terminaison avec page_size=5 :

/chat/api/channels/64/threads/1526/messages?target_message_id=19205&page_size=5

L’API renvoie les 50 messages par défaut au lieu des 5 demandés, même si de nombreux messages sont disponibles dans le thread. Il semble que le problème soit spécifique au point de terminaison de l’API des threads.

2 « J'aime »

J’ai trouvé le bug ! Je refactorisais déjà un peu ce service, donc j’ai inclus la correction dedans :

4 « J'aime »

Ce sujet a été automatiquement fermé 3 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.