Cambiar las páginas de grupo predeterminadas a /mensajes

Claro, puedes probar algo como esto en la pestaña de encabezado de tu tema/componente. Dejé algunos comentarios en el fragmento si quieres seguirlo. Puedes eliminarlos una vez que estés listo para usarlo.

Se aplican las mismas reglas. Si el usuario es miembro del grupo y el grupo tiene mensajes, Discourse navegará a la bandeja de entrada del grupo. De lo contrario, el usuario aterrizará en el directorio de miembros.

<script type="text/discourse-plugin" version="0.8">
  // Parte 1: modifica la ruta de los enlaces en las tarjetas de grupo. Esto asegura que el título del enlace
  // refleje a dónde conduce y maneje la apertura del enlace en una nueva pestaña.
  const discourseComputed = require("discourse-common/utils/decorators").default;
  
  api.modifyClass("component:group-card-contents", {
    // La propiedad groupPath se utiliza para generar el href para los enlaces de grupo
    // en la tarjeta de grupo. Vamos a modificarla
    @discourseComputed("group")
    groupPath(group) {
      // obtén el valor predeterminado del núcleo
      let groupURL = this._super(...arguments);

      // si el usuario coincide con nuestro requisito, modifica la url para que vaya a la bandeja de entrada
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // devuelve el valor predeterminado o modificado
      return groupURL;
    }
  });

  // Parte 2: modifica el enrutamiento dentro de la aplicación. Esto asegura que la navegación normal dentro de la aplicación
  // se maneje correctamente y lleve al usuario a la bandeja de entrada del grupo si cumple los
  // requisitos
  
  const DiscourseURL = require("discourse/lib/url").default;
  const { groupPath } = require("discourse/lib/url");
  const { action } = require("@ember/object");

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

    // showGroup aquí es una acción que pertenece al controlador user-card. 
    // Esto es lo que se llama cuando haces clic en el nombre/avatar del grupo dentro de las tarjetas de grupo
    @action
    showGroup(group) {
      // llama a super para asegurarte de que el código del núcleo se cargue primero
      this._super(...arguments);

      // group path es una función de ayuda de url de Discourse incorporada
      let groupURL = groupPath(group.name);

      // si el usuario cumple los requisitos, modifica la url
      if (group.is_group_user && group.has_messages) {
        groupURL = `${groupURL}/messages/`;
      }

      // llama a routeTo() con la url de grupo predeterminada o modificada 
      DiscourseURL.routeTo(groupURL);
    }
  });
</script>