O Unified New pode descartar tópicos depois que o usuário rola para baixo?

Estou considerando usar a nova visualização Unified New como o feed principal/página inicial do meu site Discourse, mas gostaria que ela se comportasse um pouco mais como o X/Twitter ou o Facebook.

O que estou tentando alcançar é:

  • Um tópico aparece no feed Unified New.

  • O usuário rola a página para baixo e o tópico fica visível em sua área de visualização (viewport).

  • Assim que ele rolar a página além desse ponto, o Discourse considera aquele tópico como “visto” ou dispensado para aquele usuário.

  • Se ele atualizar a página ou voltar para /new mais tarde, aquele tópico não aparece mais.

Idealmente, não gostaria que a linha desaparecesse imediatamente durante a rolagem, pois isso poderia causar saltos na página. Eu só gostaria que ela fosse marcada como vista/dispensada em segundo plano, para que ela some no próximo carregamento.

Também estou usando o Don’s Topic Preview Modal, que já faz o pré-carregamento (prefetch) dos tópicos ao redor da área de visualização. Por causa disso, eu gostaria de distinguir entre um tópico que está apenas sendo pré-carregado e o usuário realmente vendo-o.

Por exemplo, algo ao longo das linhas de:

O tópico está pelo menos 50% visível por 200–400 ms → marcar como visto → o usuário rola a página além dele → dispensá-lo do Unified New.

Alguém já implementou algo semelhante?

Existe alguma API ou método de front-end existente no Discourse para dispensar um tópico individual do Unified New para o usuário atual, ou isso exigiria um plugin/componente de tema?

Basicamente, estou tentando transformar o Unified New em um feed de rolagem mais personalizado de “coisas que você ainda não viu”, em vez de exigir que o usuário abra cada tópico individualmente.

4 curtidas

Acho que isso não existe no momento, então vou mover isso para Contribute > Feature.

Embora as ações em lote existam, não parece muito fluido apenas “marcar como feito” enquanto você rola a página.

1 curtida

Como o modal do tópico já utiliza o pré-carregamento (pre-fetch), vou verificar se consigo criar um componente que seja dispensado assim que o pré-carregamento for concluído.

Existe uma forma de exibir /new como a página inicial apenas para usuários conectados? É óbvio que usuários não conectados receberiam um erro 404.

Isso ajuda?

Você pode alterar “latest” para “new” aqui. Eu testei e acho que funciona.

Há também Custom Homepage for Groups, que deve funcionar usando o grupo trust_level_0, ao qual todos os usuários são adicionados automaticamente.

2 curtidas

Agora eu sabia que havia uma maneira mais simples de fazer isso… só uma questão de encontrá-la.

1 curtida

Este tópico pode ser fechado ou excluído. Eu não entendi completamente o que o /new fazia; presumi que ele mostrava posts dos últimos x períodos de tempo. Claramente não é o caso, então isso exibe uma página em branco para novos usuários.

1 curtida