Chat API: parâmetro page_size é ignorado quando direction=past

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:

  1. Faça uma chamada de API para o endpoint de mensagens de chat (por exemplo, /chat/{channel_id}/messages.json).

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

Obrigado por analisar isso!

2 curtidas

Ao ler a implementação, isso parece um tanto deliberado:

Talvez @loic tenha algumas ideias sobre isso.

2 curtidas

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?

2 curtidas

Obrigado por investigar isso.

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:

/chat/api/channels/64/threads/1526/messages?target_message_id=19205&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.

2 curtidas

Encontrei o bug! Eu já estava refatorando esse serviço um pouco, então incluí a correção nele:

4 curtidas

Este tópico foi fechado automaticamente 3 dias após a última resposta. Novas respostas não são mais permitidas.