Можно ли в Unified New скрывать темы после того, как пользователь прокрутил их?

Я рассматриваю возможность использования нового вида Unified New в качестве основной ленты/главной страницы на моем сайте Discourse, но я хотел бы, чтобы он работал немного в духе X/Twitter или Facebook.

Вот что я пытаюсь реализовать:

  • Тема появляется в ленте Unified New.

  • Пользователь прокручивает страницу вниз, и тема становится видимой в его области просмотра.

  • Как только он прокручивает мимо нее, Discourse считает эту тему «прочитанной» или «отклоненной» для данного пользователя.

  • Если он обновит страницу или вернется на /new позже, эта тема больше не будет отображаться.

В идеале я не хотел бы, чтобы строка исчезала мгновенно во время прокрутки, так как это может вызвать рывки страницы. Я просто хотел бы, чтобы тема помечалась как прочитанная/отклоненная в фоновом режиме, чтобы она исчезла при следующей загрузке.

Я также использую Don’s Topic Preview Modal, который уже предзагружает темы вокруг области просмотра. Из-за этого я хотел бы различать состояние, когда тема просто предзагружена, и состояние, когда пользователь реально видит ее.

Например, что-то вроде:

Тема видна хотя бы на 50% в течение 200–400 мс → пометить как прочитанную → пользователь прокручивает мимо нее → отклонить из Unified New.

Кто-нибудь реализовывал что-то подобное?

Существует ли уже какой-либо API Discourse или метод фронтенда для отклонения отдельной темы из Unified New для текущего пользователя, или для этого потребуются плагин/компонент темы?

4 лайка

Мне кажется, такого пока нет, поэтому я перенесу это в Contribute > Feature.

Хотя массовые действия существуют, но просто «отметить галочкой», прокручивая список, — это не очень удобно.

1 лайк

Так как модальное окно темы уже использует предзагрузку, я посмотрю, смогу ли я создать компонент, который закрывается после выполнения предзагрузки.

Есть ли способ сделать /new главной страницей только для зарегистрированных пользователей? Разумеется, незарегистрированные пользователи получат ошибку 404.

Это поможет?

Здесь можно заменить "latest

Также существует Custom Homepage for Groups, который должен работать с помощью группы trust_level_0, в которую все пользователи добавляются автоматически.

2 лайка

Теперь я знал, что есть более простой способ… осталось только его найти.

1 лайк

Эту тему можно закрыть или удалить. Я не до конца понял, что делает /new — я думал, что он показывает посты за последние x единиц времени. Очевидно, это не так, поэтому новым пользователям отображается пустая страница.

1 лайк