Я интегрирую Discourse в другое приложение и пытаюсь определить через API, есть ли у пользователя новые сообщения в чате. Если есть новые сообщения, я хочу просто показать красный значок.
Более конкретно, я пытаюсь использовать настройки пользователя в “chat_header_indicator_preference”. На данный момент у меня установлено значение “all_new”, которое, как я понимаю, должно отображать любые новые сообщения в каналах, к которым я принадлежу, а также непрочитанные упоминания и личные сообщения.
Я надеялся, что при обращении к /session/current.json смогу найти там что-то полезное для этой цели, но пока ничего подходящего не обнаружил.
Существует ли какой-либо API-эндпоинт, с помощью которого можно определить наличие новых сообщений на основе настройки chat_header_indicator_preference пользователя??
Спасибо @j.jaffeux. Я изучаю /chat/api/me/channels и вижу, что в разделе отслеживания можно пройти по всем каналам и проверить, есть ли у какого-либо канала unread_count > 0, что полезно.
Однако это, похоже, не связано с настройкой chat_header_indicator_preference пользователя и также не сообщает, есть ли для пользователя новые личные сообщения (DM) или упоминания.
В теории я могу попытаться воспроизвести логику chat_header_indicator_preference, сначала проверив, установлена ли у пользователя эта настройка в значение “all_new”. Если да, то проверить, есть ли у каких-либо его каналов unread_count > 0. Если все они равны 0, то проверить наличие непрочитанных DM или упоминаний.
Но я надеюсь, что существует более эффективный способ… (к тому же я не уверен, как получить вторую часть данных — информацию о непрочитанных DM/упоминаниях).
Пользователь ожидает увидеть красный бейдж, указывающий на новую активность, только в соответствии с этим параметром. Если у пользователя выбрано «Все новые сообщения», я ожидаю, что бейдж появится при наличии любой новой активности в любом из каналов, в которых он состоит, а также при наличии упоминаний или личных сообщений (DM).
Вы показали мне, как перебрать все каналы и проверить наличие непрочитанных сообщений, но:
это никак не связано с данным параметром;
это не поможет мне понять, есть ли у пользователя личные сообщения или упоминания.
В идеале я надеялся найти конечную точку (endpoint), которая помогла бы отобразить бейдж в зависимости от параметра chat_header_indicator_preference клиента.
Если это невозможно, то, похоже, мне сначала нужно проверить наличие непрочитанных сообщений в разделе «tracking» в chat/api/me/channels, а затем проверить второе место, чтобы узнать, есть ли у него личные сообщения или упоминания.
Я не знаю, где находится это второе место, но надеялся, что кто-то здесь сможет подсказать мне правильное направление.
В системе отслеживания есть ли способ узнать, какие каналы являются личными сообщениями, а какие — публичными?
Если у пользователя chat_header_indicator_preference установлено значение «Личные сообщения и упоминания», я бы не хотел показывать значок для обычных новых сообщений в канале.