# Chat API: معلمة page\_size يتم تجاهلها عندما يكون direction=past

**URL:** https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984
**Category:** Bug
**Tags:** chat, rest-api
**Created:** [2 أغسطس 2025، 9:50ص UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984 "2025-08-02T09:50:52Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Nima1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nima1/32/299628_2.png) [@Nima1](https://meta.discourse.org/u/Nima1)
#### Post date: [2 أغسطس 2025، 9:50ص UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/1 "2025-08-02T09:50:52Z")

</div>

أبلغ عن خطأ في واجهة برمجة تطبيقات المكون الإضافي Discourse Chat. عند الاستعلام عن رسائل الدردشة السابقة، يتم تجاهل المعلمة `page_size`، ويعيد نقطة النهاية دائمًا الحد الأقصى لعدد الرسائل.

**خطوات التكرار:**

1. إجراء استدعاء لواجهة برمجة التطبيقات لنقطة نهاية رسائل الدردشة (على سبيل المثال، `/chat/{channel_id}/messages.json`).

2. استخدام المعلمات التالية في الطلب:

**السلوك المتوقع:** يجب أن تعيد واجهة برمجة التطبيقات كائن JSON يحتوي على 5 رسائل كحد أقصى تم إرسالها قبل `target_message_id` المحدد.

**السلوك الفعلي:** تعيد واجهة برمجة التطبيقات 50 رسالة، متجاهلة المعلمة `page_size=5`. يبدو أنها مبرمجة بشكل ثابت على الحد الأقصى لحجم الصفحة في هذا السيناريو.

شكرًا لكم على النظر في هذا الأمر!

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [3 أغسطس 2025، 11:49م UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/2 "2025-08-03T23:49:11Z")

</div>

يبدو هذا متعمدًا إلى حد ما عند قراءة التنفيذ:

> <https://github.com/discourse/discourse/blob/a66897400427e6da340bd2c2984a441017116610/plugins/chat/app/services/chat/list_channel_messages.rb#L81-L98>

ربما لدى @loic بعض الأفكار هنا.

---

<div class="post-metadata">

### Author: ![loic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loic/32/105621_2.png) [@loic](https://meta.discourse.org/u/loic)
#### Post date: [5 أغسطس 2025، 10:31ص UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/3 "2025-08-05T10:31:29Z")

</div>

لقد قضيت بعض الوقت في محاولة تكرار ذلك، لكنني لم أتمكن من القيام بذلك.

لقد تحققت من `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`؟

---

<div class="post-metadata">

### Author: ![Nima1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nima1/32/299628_2.png) [@Nima1](https://meta.discourse.org/u/Nima1)
#### Post date: [6 أغسطس 2025، 10:41ص UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/4 "2025-08-06T10:41:11Z")

</div>

شكراً لاهتمامك بهذا الأمر.

أعتذر، لقد نسيت ذكر تفصيل مهم: هذه المشكلة تحدث فقط في القنوات التي تم تمكين **المواضيع** فيها. هذا هو السبب على الأرجح لعدم تمكنك من تكرارها.

يتم تجاهل المعلمة `page_size` عند جلب الرسائل من موضوع معين. على سبيل المثال، عندما أستخدم نقطة النهاية هذه مع `page_size=5`:

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

تعيد واجهة برمجة التطبيقات (API) الرسائل الافتراضية البالغ عددها 50 بدلاً من الـ 5 المطلوبة، على الرغم من توفر العديد من الرسائل في الموضوع. يبدو أن المشكلة خاصة بنقطة نهاية واجهة برمجة تطبيقات المواضيع.

---

<div class="post-metadata">

### Author: ![loic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loic/32/105621_2.png) [@loic](https://meta.discourse.org/u/loic)
#### Post date: [7 أغسطس 2025، 4:33م UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/5 "2025-08-07T16:33:31Z")

</div>

تم العثور على الخطأ! كنت أقوم بالفعل بإعادة هيكلة تلك الخدمة قليلاً، لذا قمت بتضمين الإصلاح فيها:

> <https://github.com/discourse/discourse/pull/33380>
>
> \- Introduce a \`max\_page\_size\` option, allowing different behavior between contro…llers and SDK.
> \- Improve the contract (validations & helper method).
> \- Use \`model\` where possible.
> \- Extract message existence logic to a dedicated policy, allowing easier testing.
> \- Refactor specs to follow current guidelines/best practices.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [10 أغسطس 2025، 10:11م UTC](https://meta.discourse.org/t/chat-api-page-size-parameter-is-ignored-when-direction-past/376984/6 "2025-08-10T22:11:34Z")

</div>

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام من آخر رد. لم يعد يُسمح بالردود الجديدة.
