Сообщаю об ошибке в API плагина Discourse Chat. При запросе прошлых сообщений чата параметр page_size игнорируется, и конечная точка всегда возвращает максимальное количество сообщений.
Шаги для воспроизведения:
Выполните API-запрос к конечной точке сообщений чата (например, /chat/{channel_id}/messages.json).
Используйте следующие параметры в запросе:
target_message_id: [ID последнего сообщения]
direction: past
page_size: 5 (или любое число меньше 50)
Ожидаемое поведение: API должен возвращать JSON-объект, содержащий не более 5 сообщений, отправленных до указанного target_message_id.
Фактическое поведение: API возвращает 50 сообщений, игнорируя параметр page_size=5. Похоже, что в данном случае максимальный размер страницы зашит в код.
Я потратил некоторое время на попытку воспроизвести проблему, но мне это не удалось.
Я проверил Chat::MessagesQuery, Chat::ListChannelMessages и действие контроллера как через спецификации, так и вручную на локальном экземпляре. Параметр page_size учитывается, как и ожидалось, как и параметр direction.
@Nima1, вы уверены, что используете правильный эндпоинт? В нём должно быть api, например: /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5.
Ещё один момент, который я не проверял, — отличается ли поведение на ветке stable. Ваша версия актуальна относительно ветки tests-passed?
Прошу прощения, я забыл упомянуть важный нюанс: эта проблема возникает только в каналах, где включена функция потоков. Вероятно, именно поэтому вам не удалось её воспроизвести.
Параметр page_size игнорируется при получении сообщений из конкретного потока. Например, когда я использую эту конечную точку с page_size=5:
API возвращает стандартные 50 сообщений вместо запрошенных 5, хотя в потоке доступно достаточно сообщений. Похоже, проблема специфична для конечной точки API потоков.