Certamente, puoi provare qualcosa di simile nella scheda header del tuo tema/componente. Ho lasciato alcuni commenti nello snippet se vuoi seguirli. Puoi eliminarli una volta che sei pronto per usarlo.
Valgono le stesse regole. Se l’utente è membro del gruppo e il gruppo ha messaggi, Discourse navigherà alla casella di posta del gruppo. Altrimenti, l’utente atterrerà nella directory dei membri.
<script type="text/discourse-plugin" version="0.8">
// Parte 1: modifica il percorso per i link nelle schede dei gruppi. Questo assicura che il titolo
// del link rifletta dove porta e gestisca l'apertura del link in una nuova scheda.
const discourseComputed = require("discourse-common/utils/decorators").default;
api.modifyClass("component:group-card-contents", {
// La proprietà groupPath viene utilizzata per generare l'href per i link dei gruppi
// nella scheda del gruppo. Modifichiamola
@discourseComputed("group")
groupPath(group) {
// ottieni il valore predefinito dal core
let groupURL = this._super(...arguments);
// se l'utente corrisponde al nostro requisito, modifica l'url in modo che vada alla casella di posta
if (group.is_group_user && group.has_messages) {
groupURL = `${groupURL}/messages/`;
}
// restituisci il valore predefinito o modificato
return groupURL;
}
});
// Parte 2: modifica il routing in-app. Questo assicura che la normale navigazione in-app sia
// gestita correttamente e porti l'utente alla casella di posta del gruppo se soddisfa i
// requisiti
const DiscourseURL = require("discourse/lib/url").default;
const { groupPath } = require("discourse/lib/url");
const { action } = require("@ember/object");
api.modifyClass("controller:user-card", {
// showGroup qui è un'azione che appartiene al controller user-card.
// Questo è ciò che viene chiamato quando fai clic sul nome/avatar del gruppo all'interno delle schede dei gruppi
@action
showGroup(group) {
// chiama super per assicurarti che il codice dal core venga caricato prima
this._super(...arguments);
// group path è una funzione di aiuto per gli url di Discourse integrata
let groupURL = groupPath(group.name);
// se l'utente corrisponde ai requisiti, modifica l'url
if (group.is_group_user && group.has_messages) {
groupURL = `${groupURL}/messages/`;
}
// chiama routeTo() con l'url del gruppo predefinito o modificato
DiscourseURL.routeTo(groupURL);
}
});
</script>