Ich melde einen Fehler mit der API des Discourse Chat-Plugins. Beim Abfragen früherer Chatnachrichten wird der Parameter page_size ignoriert und der Endpunkt gibt immer die maximale Anzahl von Nachrichten zurück.
Schritte zur Reproduktion:
Führen Sie einen API-Aufruf an den Endpunkt für Chatnachrichten durch (z. B. /chat/{channel_id}/messages.json).
Verwenden Sie die folgenden Parameter in der Anfrage:
target_message_id: [ID einer aktuellen Nachricht]
direction: past
page_size: 5 (oder eine beliebige Zahl kleiner als 50)
Erwartetes Verhalten: Die API sollte ein JSON-Objekt zurückgeben, das maximal 5 Nachrichten enthält, die vor der angegebenen target_message_id gesendet wurden.
Tatsächliches Verhalten: Die API gibt 50 Nachrichten zurück und ignoriert den Parameter page_size=5. Es scheint, dass die maximale Seitengröße in diesem Szenario fest codiert ist.
Ich habe einige Zeit damit verbracht, es zu replizieren, aber es ist mir nicht gelungen.
Ich habe Chat::MessagesQuery, Chat::ListChannelMessages und die Controller-Aktion sowohl durch unsere Specs als auch manuell auf einer lokalen Instanz überprüft. Der page_size-Parameter wird wie erwartet berücksichtigt, ebenso wie der direction-Parameter.
@Nima1 bist du sicher, dass du den richtigen Endpunkt verwendest? Er sollte api enthalten, so: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.
Eine weitere Sache, die ich nicht überprüft habe, ist, ob es sich auf stable anders verhält. Ist deine Instanz auf dem neuesten Stand mit dem tests-passed-Branch?
Ich entschuldige mich, ich habe vergessen, ein entscheidendes Detail zu erwähnen: Dieses Problem tritt nur in Kanälen auf, in denen Threading aktiviert ist. Das ist wahrscheinlich der Grund, warum Sie es nicht reproduzieren konnten.
Der page_size-Parameter wird ignoriert, wenn ich Nachrichten aus einem bestimmten Thread abrufe. Wenn ich beispielsweise diesen Endpunkt mit page_size=5 verwende:
Gibt die API standardmäßig 50 Nachrichten zurück, anstatt der angeforderten 5, obwohl im Thread genügend Nachrichten verfügbar sind. Es scheint, dass das Problem spezifisch für den Threads-API-Endpunkt ist.