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

Ce ne sont pas des liens ordinaires. Ils sont gérés avec un composant Ember link-to, et il y a un peu de routage impliqué.

La façon la plus simple de faire cela est d’intercepter le clic sur cet élément et de faire votre travail là. Ceci va dans le common > header d’un thème


  type="text/x-handlebars"
  data-template-name="/connectors/group-index-box-after/link-to-group-inbox"
>
</script>

<script type="text/discourse-plugin" version="0.8">
  const DiscourseURL = require("discourse/lib/url").default;
  api.registerConnectorClass('group-index-box-after', 'link-to-group-inbox', {
    setupComponent(args) {
      const group = args.model;

       if (group.is_group_user && group.has_messages) {
         const groupLink = document.querySelector(`.group-box.${group.name}`);
         const newHref = `/g/${group.name}/messages`;

         // met à jour le titre du navigateur et gère le nouvel onglet
         groupLink.href = newHref;

         // redirige le lien
         groupLink.addEventListener("click", (event) => {
            DiscourseURL.routeTo(newHref);
            event.preventDefault();
         }, {once: true})
       }
     }
  });
</script>

Si l’utilisateur est membre du groupe et que le groupe a des messages, il sera redirigé vers la boîte de réception. Sinon, il reviendra à la page par défaut /members.