Como obter todas as mensagens mais recentes/top em categorias não privadas?

Minha situação é a seguinte: estou usando o Discourse via SSO. Um membro do meu site principal pode nunca ter visitado os fóruns (ainda), mas quero mostrar a ele os tópicos mais recentes/populares para incentivá-lo a clicar e ver o que está perdendo.

No entanto, até que ele entre nos fóruns pela primeira vez, ele não tem um perfil no Discourse. (Ele é criado no primeiro login, pois é assim que o SSO foi projetado para funcionar.)

Isso gera um problema: se eu pedir ao Discourse a atividade mais recente, ou preciso especificar um usuário válido (que não existe neste caso) ou recebo uma lista que inclui tópicos que podem estar em categorias privadas (protegidas por grupo).

Atualmente, resolvo isso mantendo uma lista fixa de quais categorias devem ser excluídas e percorrendo-a para remover qualquer tópico que esteja nessas categorias. Mas não é ideal. E os tópicos fixados (“Bem-vindo aos novos fóruns” e afins) sempre acabam no topo da lista… o que, imagino, eu também possa filtrar… mas tudo isso parece muito uma solução paliativa. :slight_smile:

Alguma sugestão para uma maneira mais elegante de fazer o que estou tentando, de forma mais elegante?

Você pode voltar a usar os feeds (latest.rss/top.rss)?

Essa é uma ideia inteligente, mas acho que não vai funcionar para mim, já que meu fórum é totalmente privado. Então, se eu tentar buscar o feed RSS sem uma sessão válida do Discourse, ele redireciona para uma página de login.

Então, crie um usuário fictício com o nível mínimo de acesso e use as visualizações dele como fallback?

Crie um novo usuário sem nenhuma associação especial a grupos e faça solicitações de API para ‘latest’ usando esse usuário sem privilégios.

Hmm, não está ruim. Ainda é um pouco gambiarra, mas acho que é um pouco menos gambiarra do que o que estou fazendo agora. Manter um “usuário básico fantasma” em circulação significa, pelo menos, que não preciso manter manualmente uma lista de IDs de categorias do Discourse no código do meu site principal.