Chat API: il parametro page_size viene ignorato quando direction=past

Segnalo un bug con l’API del plugin Discourse Chat. Quando si interrogano i messaggi di chat precedenti, il parametro page_size viene ignorato e l’endpoint restituisce sempre il numero massimo di messaggi.

Passaggi per riprodurre:

  1. Effettuare una chiamata API all’endpoint dei messaggi di chat (ad esempio, /chat/{channel_id}/messages.json).

  2. Utilizzare i seguenti parametri nella richiesta:

    • target_message_id: [ID di un messaggio recente]

    • direction: past

    • page_size: 5 (o qualsiasi numero inferiore a 50)

Comportamento previsto: L’API dovrebbe restituire un oggetto JSON contenente un massimo di 5 messaggi inviati prima del target_message_id specificato.

Comportamento effettivo: L’API restituisce 50 messaggi, ignorando il parametro page_size=5. Sembra essere codificato in modo fisso alla dimensione massima della pagina in questo scenario.

Grazie per aver esaminato questo problema!

2 Mi Piace

Leggendo l’implementazione, questo sembra piuttosto deliberato:

Forse @loic ha qualche pensiero in merito.

2 Mi Piace

Ho passato del tempo a cercare di replicarlo, ma non sono riuscito a farlo.

Ho controllato Chat::MessagesQuery, Chat::ListChannelMessages e l’azione del controller attraverso le nostre specifiche e manualmente anche su un’istanza locale. Il parametro page_size viene preso in considerazione come previsto, così come il parametro direction.

@Nima1 sei sicuro di usare l’endpoint corretto? Dovrebbe contenere api, così: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.

Un’altra cosa che non ho controllato è se si comporta diversamente su stable. La tua istanza è aggiornata con il branch tests-passed?

2 Mi Piace

Grazie per aver esaminato la questione.

Mi scuso, ho dimenticato di menzionare un dettaglio cruciale: questo problema si verifica solo nei canali con threading abilitato. È probabile che sia per questo che non sei riuscito a replicarlo.

Il parametro page_size viene ignorato quando recupero i messaggi da un thread specifico. Ad esempio, quando utilizzo questo endpoint con page_size=5:

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

L’API restituisce i 50 messaggi predefiniti invece dei 5 richiesti, anche se sono disponibili molti messaggi nel thread. Sembra che il problema sia specifico dell’endpoint API dei thread.

2 Mi Piace

Trovato il bug! Stavo già refactorizzando quel servizio, quindi ho incluso la correzione:

4 Mi Piace

Questo argomento è stato chiuso automaticamente 3 giorni dopo l’ultima risposta. Non sono più consentite nuove risposte.