Chat API: page_size-Parameter wird ignoriert, wenn direction=past

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:

  1. Führen Sie einen API-Aufruf an den Endpunkt für Chatnachrichten durch (z. B. /chat/{channel_id}/messages.json).

  2. 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.

Vielen Dank für die Prüfung!

2 „Gefällt mir“

Beim Durchlesen der Implementierung scheint dies einigermaßen beabsichtigt zu sein:

Vielleicht hat @loic hierzu einige Gedanken.

2 „Gefällt mir“

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?

2 „Gefällt mir“

Vielen Dank, dass Sie sich darum gekümmert haben.

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:

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

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.

2 „Gefällt mir“

Bug gefunden! Ich habe diesen Dienst bereits etwas umstrukturiert und die Korrektur darin enthalten:

4 „Gefällt mir“

Dieses Thema wurde 3 Tage nach der letzten Antwort automatisch geschlossen. Neue Antworten sind nicht mehr möglich.