Estou relatando um bug com a API do plugin Discourse Chat. Ao consultar mensagens de chat anteriores, o parâmetro page_size é ignorado e o endpoint sempre retorna o número máximo de mensagens.
Passos para Reproduzir:
Faça uma chamada de API para o endpoint de mensagens de chat (por exemplo, /chat/{channel_id}/messages.json).
Use os seguintes parâmetros na solicitação:
target_message_id: [ID de uma mensagem recente]
direction: past
page_size: 5 (ou qualquer número menor que 50)
Comportamento Esperado: A API deve retornar um objeto JSON contendo no máximo 5 mensagens enviadas antes do target_message_id especificado.
Comportamento Atual: A API retorna 50 mensagens, ignorando o parâmetro page_size=5. Parece estar codificado para o tamanho máximo da página neste cenário.
Passei algum tempo tentando replicá-lo, mas não consegui.
Verifiquei Chat::MessagesQuery, Chat::ListChannelMessages e a ação do controller através de nossas especificações e manualmente em uma instância local também. O parâmetro page_size é levado em consideração como esperado, assim como o parâmetro direction.
@Nima1 você tem certeza de que está usando o endpoint correto? Ele deve ter api nele, assim: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.
Outra coisa que não verifiquei é se ele se comporta de maneira diferente em stable. Sua instância está atualizada com o branch tests-passed?
Peço desculpas, esqueci de mencionar um detalhe crucial: esse problema ocorre apenas em canais com threading habilitado. É por isso que você provavelmente não conseguiu reproduzi-lo.
O parâmetro page_size é ignorado quando busco mensagens de um thread específico. Por exemplo, quando uso este endpoint com page_size=5:
A API retorna as 50 mensagens padrão em vez das 5 solicitadas, mesmo que haja muitas mensagens disponíveis no thread. Parece que o problema é específico do endpoint da API de threads.