Estou tentando injetar o nome completo de um usuário no modelo Handlebars do tópico em destaque. Não tenho problemas em inserir um valor de teste no modelo, mas não consigo obter o valor que desejo. No código abaixo, idealmente retornaria realname com o nome completo do usuário no lugar de “Test”:
<script type="text/discourse-plugin" version="0.8">
var FeaturedTopicView = require('discourse/components/featured-topic').default;
FeaturedTopicView.reopen({
fullName: function() {
// Obter o nome de usuário do último postador
let username = this.topic.last_poster.username;
// Tentar obter o nome completo do usuário com o nome de usuário estabelecido acima
let realname = Discourse.User.findByUsername(username).then(function(result) {
return result.name;
}).then(function(result) {
// Isso nos dá os nomes reais! Mas está inacessível fora daqui
console.log(result);
});
return "Test";
}.property()
});
</script>
O usuário que me interessa é o último postador, então, neste caso, parece que tudo com que tenho para trabalhar é this.topic.last_poster. Isso tem três valores associados: username, id e avatar_template. Infelizmente, o que realmente preciso é name.
Eu esperava haver algo que me permitisse pesquisar o nome completo de um usuário usando id ou username. Não estou muito familiarizado com o conceito de promises e como usá-las, mas provei um conceito usando Discourse.User.findByUsername(username). Consigo fazer console.log com sucesso dos nomes completos de que preciso, mas eles parecem estar presos naquele escopo.
Posso estar fazendo tudo errado, mas foi meu melhor esforço com base no meu conhecimento atual.
Qualquer ajuda ou sugestão seria muito apreciada! Por favor, avise-me se precisar de esclarecimentos sobre algo.