Я рассматриваю возможность использования нового вида Unified New в качестве основной ленты/главной страницы на моем сайте Discourse, но я хотел бы, чтобы он работал немного в духе X/Twitter или Facebook.
Вот что я пытаюсь реализовать:
Тема появляется в ленте Unified New.
Пользователь прокручивает страницу вниз, и тема становится видимой в его области просмотра.
Как только он прокручивает мимо нее, Discourse считает эту тему «прочитанной» или «отклоненной» для данного пользователя.
Если он обновит страницу или вернется на /new позже, эта тема больше не будет отображаться.
В идеале я не хотел бы, чтобы строка исчезала мгновенно во время прокрутки, так как это может вызвать рывки страницы. Я просто хотел бы, чтобы тема помечалась как прочитанная/отклоненная в фоновом режиме, чтобы она исчезла при следующей загрузке.
Я также использую Don’s Topic Preview Modal, который уже предзагружает темы вокруг области просмотра. Из-за этого я хотел бы различать состояние, когда тема просто предзагружена, и состояние, когда пользователь реально видит ее.
Например, что-то вроде:
Тема видна хотя бы на 50% в течение 200–400 мс → пометить как прочитанную → пользователь прокручивает мимо нее → отклонить из Unified New.
Кто-нибудь реализовывал что-то подобное?
Существует ли уже какой-либо API Discourse или метод фронтенда для отклонения отдельной темы из Unified New для текущего пользователя, или для этого потребуются плагин/компонент темы?
Так как модальное окно темы уже использует предзагрузку, я посмотрю, смогу ли я создать компонент, который закрывается после выполнения предзагрузки.
Есть ли способ сделать /new главной страницей только для зарегистрированных пользователей? Разумеется, незарегистрированные пользователи получат ошибку 404.
Также существует Custom Homepage for Groups, который должен работать с помощью группы trust_level_0, в которую все пользователи добавляются автоматически.
Эту тему можно закрыть или удалить. Я не до конца понял, что делает /new — я думал, что он показывает посты за последние x единиц времени. Очевидно, это не так, поэтому новым пользователям отображается пустая страница.