Estoy considerando usar la nueva vista Unified New como el feed principal o página de inicio de mi sitio de Discourse, pero me gustaría que se comportara un poco más como X/Twitter o Facebook.
Lo que estoy intentando lograr es:
Un tema aparece en el feed Unified New.
El usuario hace scroll hacia abajo y el tema ha sido visible en su área de visualización (viewport).
Una vez que el usuario ha desplazado más allá de él, Discourse considera que ese tema ha sido «visto» o descartado para ese usuario.
Si actualizan la página o vuelven a /new más tarde, ese tema ya no aparece.
Idealmente, no querría que la fila desapareciera de inmediato mientras se hace scroll, ya que eso podría causar saltos en la página. Solo querría que se marcara como visto/descartado en segundo plano para que desaparezca en la siguiente carga.
También estoy usando Don’s Topic Preview Modal, que ya realiza la preobtención (prefetch) de temas alrededor del viewport. Por eso, querría distinguir entre un tema que simplemente se ha preobtenido y uno que el usuario está viendo realmente.
Por ejemplo, algo así:
El tema está al menos un 50% visible durante 200–400 ms → marcar como visto → el usuario lo desplaza fuera de la vista → descartarlo de Unified New.
¿Alguien ha implementado algo similar?
¿Existe una API de Discourse o un método de frontend existente para descartar un tema individual de Unified New para el usuario actual, o ¿requeriría esto un componente de plugin/tema?
Básicamente, estoy intentando convertir Unified New en un feed de scroll más personalizado de «cosas que aún no has visto», en lugar de requerir que el usuario abra cada tema individualmente.
También existe Custom Homepage for Groups, que debería funcionar utilizando el grupo trust_level_0, al cual todos los usuarios se agregan automáticamente.
Este tema se puede cerrar o eliminar, no entendí bien qué hacía /new, asumí que mostraba publicaciones de las últimas x horas. Claramente no es así, por lo que esto le muestra a los nuevos usuarios una página en blanco.