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:
Effettuare una chiamata API all’endpoint dei messaggi di chat (ad esempio, /chat/{channel_id}/messages.json).
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.
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?
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:
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.