Changer les pages de groupe par défaut en /messages

Bien sûr, vous pouvez essayer quelque chose comme ceci dans l’onglet d’en-tête de votre thème/composant. J’ai laissé quelques commentaires dans l’extrait si vous souhaitez suivre. Vous pouvez les supprimer une fois que vous êtes prêt à l’utiliser.
Les mêmes règles s’appliquent. Si l’utilisateur est membre du groupe et que le groupe a des messages, Discourse naviguera vers la boîte de réception du groupe. Sinon, l’utilisateur atterrira sur le répertoire des membres.

<script type="text/discourse-plugin" version="0.8">
  // Partie 1 : modifier le chemin des liens dans les cartes de groupe. Cela garantit que le titre du lien
  // reflète où il mène et gère l'ouverture du lien dans un nouvel onglet.
  const discourseComputed = require("discourse-common/utils/decorators").default;
  
  api.modifyClass("component:group-card-contents", {
    // La propriété groupPath est utilisée pour générer le href des liens de groupe
    // dans la carte de groupe. Modifions-la
    @discourseComputed("group")
    groupPath(group) {
      // obtenir la valeur par défaut du cœur
      let groupURL = this._super(...arguments);

      // si l'utilisateur correspond à notre exigence, modifier l'url pour qu'elle pointe vers la boîte de réception
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // retourner la valeur par défaut ou modifiée
      return groupURL;
    }
  });

  // Partie 2 : modifier le routage dans l'application. Cela garantit que la navigation normale dans l'application est
  // gérée correctement et dirige l'utilisateur vers la boîte de réception du groupe s'il remplit les
  // conditions requises
  
  const DiscourseURL = require("discourse/lib/url").default;
  const { groupPath } = require("discourse/lib/url");
  const { action } = require("@ember/object");

  api.modifyClass("controller:user-card", {

    // showGroup est ici une action qui appartient au contrôleur user-card.
    // C'est ce qui est appelé lorsque vous cliquez sur le nom/avatar du groupe à l'intérieur des cartes de groupe
    @action
    showGroup(group) {
      // appeler super pour s'assurer que le code du cœur est chargé en premier
      this._super(...arguments);

      // group path est une fonction d'aide d'URL Discourse intégrée
      let groupURL = groupPath(group.name);

      // si l'utilisateur correspond aux exigences, modifier l'url
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // appeler routeTo() avec l'url de groupe par défaut ou modifiée
      DiscourseURL.routeTo(groupURL);
    }
  });
</script>