Ik meld een bug met de API van de Discourse Chat-plugin. Bij het opvragen van eerdere chatberichten wordt de page_size-parameter genegeerd en retourneert het eindpunt altijd het maximale aantal berichten.
Stappen om te reproduceren:
Voer een API-aanroep uit naar het eindpunt voor chatberichten (bijv. /chat/{channel_id}/messages.json).
Gebruik de volgende parameters in het verzoek:
target_message_id: [ID van een recent bericht]
direction: past
page_size: 5 (of een ander getal kleiner dan 50)
Verwacht Gedrag: De API moet een JSON-object retourneren met maximaal 5 berichten die zijn verzonden vóór de opgegeven target_message_id.
Werkelijk Gedrag: De API retourneert 50 berichten, waarbij de page_size=5-parameter wordt genegeerd. Het lijkt erop dat dit in dit scenario is vastgecodeerd op de maximale paginagrootte.
Het lukte me niet om het te repliceren na er wat tijd aan besteed te hebben.
Ik heb Chat::MessagesQuery, Chat::ListChannelMessages en de controller-actie gecontroleerd via onze specs en ook handmatig op een lokale instantie. De page_size-parameter wordt meegenomen zoals verwacht, net als de direction-parameter.
@Nima1 ben je er zeker van dat je de juiste endpoint gebruikt? Deze zou api moeten bevatten, zoals hier: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.
Iets anders dat ik niet heb gecontroleerd, is of het anders gedraagt op stable. Is jouw instantie up-to-date met de tests-passed-branch?
Mijn excuses, ik vergat een cruciaal detail te vermelden: dit probleem doet zich alleen voor in kanalen met threading ingeschakeld. Dat is waarschijnlijk de reden waarom u het niet kon repliceren.
De page_size-parameter wordt genegeerd wanneer ik berichten uit een specifieke thread ophaal. Wanneer ik bijvoorbeeld dit eindpunt gebruik met page_size=5:
Geeft de API standaard 50 berichten terug in plaats van de gevraagde 5, ook al zijn er voldoende berichten beschikbaar in de thread. Het lijkt erop dat het probleem specifiek is voor het threads API-eindpunt.