Отмеченные чаты исчезают, если у пользователя более 100 чатов

Закреплённые чат-каналы исчезают, когда пользователь подписывается более чем на 100 публичных каналов

Пользователь, подписанный более чем на 100 публичных категорий чат-каналов, не может стабильно видеть все свои закреплённые каналы после перезагрузки Discourse.

Я проверил следующее:

  • /chat/api/me/channels возвращает ровно 100 подписанных публичных каналов.
  • Возвращаемые каналы отсортированы по алфавиту.
  • Канал, находящийся вне первых 100, отсутствует в боковой панели и разделе «Закреплённые».
  • Прямой запрос к этому каналу подтверждает, что он открыт, а following=true и starred=true.
  • Пользователи, подписанные менее чем на 100 публичных каналов, видят тот же закреплённый канал в обычном режиме.

Бэкенд применяет MAX_PUBLIC_CHANNEL_RESULTS = 100 после алфавитной сортировки:

Фронтенд, по-видимому, формирует starredChannels, фильтруя уже обрезанный общий набор каналов:

Это стало стабильно заметным после изменения на алфавитную сортировку:

Ожидаемое поведение: все присоединённые и закреплённые каналы должны отображаться в разделе «Закреплённые», независимо от их позиции в общем результате публичных каналов. Возможные решения: загрузка закреплённых каналов независимо или постраничная выдача всех подписанных публичных каналов.

спасибо за отчёт @ARK-Helena :+1: этот случай выглядит как граничный[1], поэтому я «разделил» яблоко надвое и добавил поддержку получения избранных каналов отдельно от обычных, но сохранил лимит в 100 на каждый «тип».


  1. серьёзно, 100 избранных каналов? ↩︎

вау @zogstrip, это было невероятно быстро :slight_smile: Интересно, пользователи, состоящие более чем в 100 чатах любого типа, всё ещё могут загрузить их все в боковой панели? Есть ли там какая-то пагинация или хотя бы указание на то, что список обрезан? Большое спасибо! :slight_smile:

Нет, такой возможности нет. Именно поэтому я и сказал, что «разрезал яблоко пополам», потому что добавление постраничной навигации потребовало бы значительно больше усилий. И поскольку это очень необычное состояние, нам придётся подождать больше «сообщений от пользователей», прежде чем вкладывать в это работу.