Claro, você pode tentar algo como isto na aba de cabeçalho do seu tema/componente. Deixei alguns comentários no trecho se você quiser acompanhar. Você pode excluí-los quando estiver pronto para usá-lo.
As mesmas regras se aplicam. Se o usuário for membro do grupo e o grupo tiver mensagens, o Discourse navegará para a caixa de entrada do grupo. Caso contrário, o usuário acessará o diretório de membros.
<script type="text/discourse-plugin" version="0.8">
// Parte 1: modificar o caminho para os links nos cartões de grupo. Isso garante que o título do link
// reflita para onde ele leva e lida com a abertura do link em uma nova aba.
const discourseComputed = require("discourse-common/utils/decorators").default;
api.modifyClass("component:group-card-contents", {
// A propriedade groupPath é usada para gerar o href para os links de grupo
// no cartão de grupo. Vamos modificá-la
@discourseComputed("group")
groupPath(group) {
// obtém o valor padrão do núcleo
let groupURL = this._super(...arguments);
// se o usuário corresponder ao nosso requisito, modifica a url para que ela vá para a caixa de entrada
if (group.is_group_user && group.has_messages) {
groupURL = `${groupURL}/messages/`;
}
// retorna o valor padrão ou modificado
return groupURL;
}
});
// Parte 2: modificar o roteamento dentro do aplicativo. Isso garante que a navegação normal dentro do aplicativo
// seja tratada corretamente e leve o usuário para a caixa de entrada do grupo se ele atender aos
// requisitos
const DiscourseURL = require("discourse/lib/url").default;
const { groupPath } = require("discourse/lib/url");
const { action } = require("@ember/object");
api.modifyClass("controller:user-card", {
// showGroup aqui é uma ação que pertence ao controller user-card.
// Isso é o que é chamado quando você clica no nome/avatar do grupo dentro dos cartões de grupo
@action
showGroup(group) {
// chama super para garantir que o código do núcleo seja carregado primeiro
this._super(...arguments);
// group path é uma função auxiliar de url integrada do Discourse
let groupURL = groupPath(group.name);
// se o usuário corresponder aos requisitos, modifica a url
if (group.is_group_user && group.has_messages) {
groupURL = `${groupURL}/messages/`;
}
// chama routeTo() com a groupURL padrão ou modificada
DiscourseURL.routeTo(groupURL);
}
});
</script>