Diese Links verwenden einen etwas anderen Serialisierer – da dort nicht alle Gruppendaten benötigt werden.
Sie können jedoch eine gefilterte Liste der Gruppen des aktuellen Benutzers bei der ersten Seitenansicht speichern und diese als Referenz zur Überprüfung der Mitgliedschaft verwenden. Diese Informationen sind bereits in der anfänglichen Nutzlast verfügbar, sodass kein Mehraufwand in Bezug auf zusätzliche Anfragen oder Ähnliches entsteht. Etwas wie dieses
<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>
Behalten Sie diesen Ausschnitt in seinen eigenen Skript-Tags und fügen Sie ihn zusammen mit den anderen Ausschnitten zur Kopfzeile hinzu. Sie behalten ihn getrennt, da er schnell abbricht, wenn der Benutzer nicht angemeldet ist.