Ok, então um redirecionamento para um URL externo que contém o nome de usuário.
Aqui está um exemplo básico de como você pode fazer isso, usando a nova API:
import { apiInitializer } from "discourse/lib/api";
import DButton from "discourse/components/d-button";
export default apiInitializer("1.8.0", (api) => {
const currentUser = api.getCurrentUser();
if (!currentUser) {
return;
}
const url =
"https://example.com/?u=" + encodeURIComponent(currentUser.username);
const iconComponent = `<template>
<li class="calculator">
<DButton
@href={{url}}
@icon="calculator"
class="icon btn-flat"
title="Calculator"
target="_blank"
/>
</li>
</template>`;
api.headerIcons.add("calculator", iconComponent, { before: "search" });
});
calculatoré um nome únicoiconComponentrefere-se a um glimmer inline<template>como você vê aqui, mas também pode se referir a um componente de classe glimmer que você cria no diretóriocomponents.- Você pode escolher onde colocar seu ícone usando
beforeouafterseguido pelo nome único do ícone do cabeçalho.

Sinta-se à vontade para ajustar!
Observação:
-
A sintaxe do glimmer
<template>não funcionará usando a UI.Você precisará criar um componente de tema com arquivos separados. Para gerar um TC rapidamente, você pode usar o Discourse CLI e desenvolver com ele com muita facilidade com seu editor de código. Eu recomendo muito.
Você também pode usar o template no Github: GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes.
- Para usar um componente glimmer, a extensão do arquivo deve ser
.gjs.
- Para usar um componente glimmer, a extensão do arquivo deve ser
Me avise se precisar de mais ajuda!