Ces liens utilisent un sérialiseur légèrement différent, car toutes les données du groupe ne sont pas nécessaires ici.
Néanmoins, vous pouvez stocker une liste filtrée des groupes de l’utilisateur actuel lors de la visualisation initiale de la page et les utiliser comme référence pour vérifier l’appartenance. Ces informations sont déjà disponibles dans la charge utile initiale, il n’y a donc pas de surcharge en termes de requêtes supplémentaires ou quoi que ce soit de ce genre. Quelque chose comme ceci :
<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>
Conservez cet extrait dans ses propres balises script et ajoutez-le à l’en-tête avec les autres extraits. Vous le gardez séparé car il s’arrête rapidement si l’utilisateur n’est pas connecté.