Quei link utilizzano un serializzatore leggermente diverso, poiché non tutti i dati del gruppo sono necessari lì.
Tuttavia, puoi memorizzare un elenco filtrato dei gruppi dell’utente corrente nella visualizzazione iniziale della pagina e utilizzarli come riferimento per verificare l’appartenenza. Queste informazioni sono già disponibili nel payload iniziale, quindi non c’è alcun sovraccarico in termini di richieste aggiuntive o altro. Qualcosa del genere:
<script type="text/discourse-plugin" version="0.8">
const user = api.getCurrentUser();
if (!user) {
return;
}
const userGroups = user.groups.map(group => group.name);
api.reopenWidget("pm-map-user-group", {
transform(attrs) {
const group = attrs.group;
const isGroupUser = Object.values(userGroups).includes(group.name);
// {href: "/g/foo"};
let groupURL = this._super(...arguments);
if (isGroupUser && group.has_messages) {
groupURL.href = `${groupURL.href}/messages/`;
}
return groupURL;
}
});
</script>
Mantieni questo snippet nei suoi tag script e aggiungilo all’header insieme agli altri snippet. Lo tieni separato perché esegue un controllo rapido se l’utente non è connesso.